【发布时间】:2017-05-23 03:43:03
【问题描述】:
表格:学生、地址 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 的地址更改为新地址,则会创建一个新行,但不会删除旧地址的行。 如果我将地址设置为 null 仍然不会删除
例如
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);
我已设置级联所有。需要做哪些额外/不同的事情。 Inverse 在这里适用吗?
【问题讨论】:
-
你试过 orphanRemoval="true" 吗?
-
@Susie 成功了。你能不能把它作为单独的答案发布,所以我可以接受它并给你信用
-
如果你想让学生成为家长,你必须将外键放入地址表。此映射需要双向 @OneToOne 关联。父级可以通过级联将其生命周期传播到子级。
-
@Lele 可能我已经按照 Susie 所说的方式回答了这个问题。你还会等苏西吗?
-
@ShafinMahmud 是的。因为她是第一个回答的。还有一个精确的。
标签: java hibernate hsqldb cascade hibernate-cascade