休眠多对多关系并级联删除

问题描述

| 使用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;
    }
}
我的问题是: 是否可以删除地址和人之间关系的元素,地址的\“ orphans \”元素也将被删除。换句话说,我不想拥有未链接到某个人的地址。 谢谢, 渣。     

解决方法

你为什么要这么做?您可以删除任何实体(人或地址),然后Hibernate将根据您定义的注释确保一致性。 在这种情况下,手动删除不同表之间的链接是不必要的风险。     ,不,不可能。 Hibernate不为多对多关系提供孤立删除功能。     ,
org.hibernate.annotations.CascadeType.DELETE_ORPHAN
可用于删除孤儿。