Hibernate具有二级缓存的双向多对多更新

时间:2010-06-01 16:05:03

标签: hibernate

我有一个双向的多对多课程:

public class A{
 @ManyToMany(mappedBy="listA")
 private List<B> listB;
}
public class B{
 @ManyToMany
 private List<A> listA;
}

现在我将listA保存到B:

b.setListA(listA);

这一切都正常,直到我打开集合a.ListB上的二级缓存。现在,当我更新B中的列表时,a.listB不会更新并保持陈旧状态。

你如何解决这个问题?

谢谢, 德韦恩

1 个答案:

答案 0 :(得分:2)

您是否正确设置A和B之间的双向链接的两侧?一种典型的方法是使用这样的防御方法:

public class B {
    @ManyToMany
    private List<A> listA;

    public void addToListA(A a) {
        this.listA.add(a);
        a.getListB().add(this);
    }

    public void removeFromListA(A a) {
        this.listA.remove(a);
        a.getListB().remove(this);
    }
}