本文介紹了休眠一對一映射。從依賴表中刪除行的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
表:學生、地址
Student.ADDR_ID列映射到Address.ID
我的學生課堂上的注釋如下
public class Student {
String name, surname;
int rollNumber;
Teacher classTeacher;
Address address;
@OneToOne(cascade=CascadeType.ALL)
@JoinColumn(name="ADDR_ID")
public Address getAddress() {
return address;
}
:
:
在創建和更新案例時運行良好。
如果我將學生的地址更改為新的,則會創建一個新行,但不會刪除舊地址的行。
如果仍將地址設置為空,則不會刪除
例如
Student s1 = session.get(Student.class, 24);
Address addr = new Address();
session.save(addr);
s1.setAddress(addr);
session.save(s1);
or
Student s1 = session.get(Student.class, 24);
s1.setAddress(null);
我已將CASCADE ALL設置。需要做哪些額外的/不同的工作。反轉是否適用于此?
推薦答案
如果滿足需要,您應該使用orphanremoval = true
@OneToOne(cascade=CascadeType.ALL, orphanRemoval=true)
@JoinColumn(name="ADDR_ID")
public Address getAddress() {
}
這篇關于休眠一對一映射。從依賴表中刪除行的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,