代码之家  ›  专栏  ›  技术社区  ›  DD.

使用二级缓存休眠双向多个更新

  •  0
  • DD.  · 技术社区  · 14 年前

    我有一个双向多对多类:

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

    b.setListA(listA);
    

    在我打开集合a.ListB的二级缓存之前,这些都可以正常工作。现在,当我更新B中的列表时,a.listB不会得到更新并且仍然是过时的。

    你怎么避开这个?

    谢谢, 德韦恩

    1 回复  |  直到 14 年前
        1
  •  2
  •   Pascal Thivent    14 年前

    您是否正确设置了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);
        }
    }