@OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL, optional = true, orphanRemoval = true)
@JoinColumn(name = "rcp_pf_id_photodata")
private PersistableFile photoData;
持久文件如下所示:
@Entity
@Table(name = "PERSISTABLE_FILE")
public class PersistableFile
{
@SequenceGenerator(allocationSize=1, initialValue=1, sequenceName="persistablefile_pf_id_seq", name="persistablefile_pf_id_seq")
@GeneratedValue(generator="persistablefile_pf_id_seq", strategy=GenerationType.SEQUENCE)
@Id
@Column(name = "pf_id")
private Long pfId;
@NotNull
@Column(name = "pf_filename")
private String filename;
@NotNull
@Column(name = "pf_content")
private byte[] content;
@NotNull
@Column(name = "pf_filetype")
private String filetype;
//more code
}
当父文件被删除时,持久文件(子文件)也会被删除。这没关系。但当父母被保存下来,我
setPhotoData(null);
setPhotoData(null)
在更新父实体之后,子实体将永远保留在数据库中。
这是一段“一对一”的关系,所以我不能这么做
clear()
在上面。我怀疑将child的所有字段设置为null是否是删除孤立项的正确方法(这是不可能的,因为所有的字段都不是null),但是正确的方法是什么?