我有兩個實體,具有以下JPA註解:@OneToOne和@JoinColumn,自動刪除null實體,可以嗎?
@Entity
@Table(name = "Owner")
public class Owner implements Serializable
{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
private long id;
@OneToOne(fetch=FetchType.EAGER , cascade=CascadeType.ALL)
@JoinColumn(name="Data_id")
private Data Data;
}
@Entity
@Table(name = "Data")
public class Data implements Serializable
{
@Id
private long id;
}
所有者和數據具有一個一對一映射,持有端是所有者。 當我執行時會發生問題:owner.setData(null); ownerDao.update(所有者); 「所有者」表的Data_id變爲空,這是正確的。
但「數據」行不會自動刪除。我有寫另一個DataDao和另一個服務層來包裝這兩個行動(ownerDao.update(所有者); dataDao.delete(數據);)
是否有可能使一個數據行時自動刪除所有者將其設置爲null?
謝謝,它的作品! And ... CascadeType.DELETE_ORPHAN已棄用。它取代了 @OneToOne(fetch = FetchType.EAGER,cascade = CascadeType.ALL,orphanRemoval = true) – smallufo 2010-06-17 01:33:54
FetchType.EAGER對於孤兒刪除似乎是必不可少的。 FetchType.LAZY孤兒刪除不起作用。休眠版本4.3.10.FINAL。 – 2016-08-24 02:01:02
使用Hibernate 5.0.11.FINAL,這對我來說'@OneToOne(cascade = CascadeType.ALL,orphanRemoval = true)'就足夠了。我成功地使用了'FetchType.LAZY'或'FetchType.EAGER'。 'EAGER'是默認的。 – 2016-12-15 16:02:56