本文介紹了休眠一對(duì)一映射。從依賴表中刪除行的處理方法,對(duì)大家解決問題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧!
問題描述
表:學(xué)生、地址
Student.ADDR_ID列映射到Address.ID
我的學(xué)生課堂上的注釋如下
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;
}
:
:
在創(chuàng)建和更新案例時(shí)運(yùn)行良好。
如果我將學(xué)生的地址更改為新的,則會(huì)創(chuàng)建一個(gè)新行,但不會(huì)刪除舊地址的行。
如果仍將地址設(shè)置為空,則不會(huì)刪除
例如
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設(shè)置。需要做哪些額外的/不同的工作。反轉(zhuǎn)是否適用于此?
推薦答案
如果滿足需要,您應(yīng)該使用orphanremoval = true
@OneToOne(cascade=CascadeType.ALL, orphanRemoval=true)
@JoinColumn(name="ADDR_ID")
public Address getAddress() {
}
這篇關(guān)于休眠一對(duì)一映射。從依賴表中刪除行的文章就介紹到這了,希望我們推薦的答案對(duì)大家有所幫助,