使用Hibernate,我有以下类:
public class Person {
@ManyToMany(fetch=FetchType.LAZY)
@Cascade(CascadeType.ALL)
@JoinTable(name = "person_address", joinColumns = { @JoinColumn(name = "person_id") },
inverseJoinColumns = { @JoinColumn(name = "address_id") })
public List<Address> getAddresses() {
return addresses;
}
}
public class Address {
...
@ManyToMany(mappedBy="addresses", fetch=FetchType.LAZY)
@Cascade(CascadeType.ALL)
public List<Person> getPersons() {
return persons;
}
}
我的问题是: 是否有可能删除Address和Person之间关系的元素,Address的“孤儿”元素也被删除。换句话说,我不想拥有与人无关的地址。
谢谢, 马克。
答案 0 :(得分:3)
不,这是不可能的。 Hibernate不为多对多关系提供孤立删除功能。
答案 1 :(得分:1)
你为什么要这样做?您可以删除任何实体(人员或地址),Hibernate将根据您定义的注释确保一致性。
在这种情况下,手动删除不同表之间的链接是不必要的风险。
答案 2 :(得分:0)
org.hibernate.annotations.CascadeType.DELETE_ORPHAN
可用于删除孤儿。