Java 多对多:“父”在仍有另一个“子”时被删除

Java 多对多:“父”在仍有另一个“子”时被删除,java,hibernate,hibernate-mapping,Java,Hibernate,Hibernate Mapping,我有一个多对多关系,其中一方的两个记录在另一方具有相同的父项,即关系的所有者。当我删除两条记录中的一条时,父记录和可连接记录也会被删除。我不要这个。我预计,只要另一边有孩子,父母就不会被免职 我有以下数据: Table A SID | NAME ----------------------- 90 | xyz

我有一个多对多关系,其中一方的两个记录在另一方具有相同的父项,即关系的所有者。当我删除两条记录中的一条时,父记录和可连接记录也会被删除。我不要这个。我预计,只要另一边有孩子,父母就不会被免职

我有以下数据:

Table A                                      
SID | NAME                                 
-----------------------               
90  | xyz                                     
-----------------------               
91  | abc                                 

Table AB                                    
A_SID | B_SID
-----------------------               
 90     | 5                                     
-----------------------               
 91     | 5                             

Table B                                    
SID | NAME
-----------------------               
5    | lala                                                          
这是hibernate映射

mapping of class A on table A:
<hibernate-mapping ...

        <set name="setOfBs" table="AB" inverse="true" cascade="delete-orphan">
            <key column="A_SID" not-null="true" />
            <many-to-many column="B_SID" class="B"/>
        </set>
...
</hibernate-mapping>

mapping of class B on table B:
<hibernate-mapping ...

        <set name="setOfAs" table="AB" lazy="false">
            <key column="B_SID" not-null="true" />
            <many-to-many column="A_SID" class="A"/>
        </set>
...
</hibernate-mapping>
我希望表B中的记录不会被删除,因为它不是孤儿。我做错了什么?

在实体中使用此选项 私有列表Bs=新的ArrayList0

@ManyToMany(cascade = CascadeType.REFRESH, fetch = FetchType.EAGER)
@JoinTable(name = "AB", joinColumns = { @JoinColumn(name = "A", nullable = false, updatable = false) }, inverseJoinColumns = { @JoinColumn(name = "B", nullable = false, updatable = false) })
public List<B> getBs() {
    return this.Bs;
}

public void setBs(List<B> Bs) {
    this.Bs = Bs;
}
@ManyToMany(cascade = CascadeType.REFRESH, fetch = FetchType.EAGER)
@JoinTable(name = "AB", joinColumns = { @JoinColumn(name = "A", nullable = false, updatable = false) }, inverseJoinColumns = { @JoinColumn(name = "B", nullable = false, updatable = false) })
public List<B> getBs() {
    return this.Bs;
}

public void setBs(List<B> Bs) {
    this.Bs = Bs;
}