JPA:为什么merge会在没有级联的情况下更新连接表

时间:2015-02-03 21:24:47

标签: database session jpa cascade staleobjectstate

感谢您提前查看此问题。

基本上,我有几个实体,这就是关系。

A ---<表AB> ----表B

实体类:

class A {    
     @ManyToMany
     @JoinTable(name = "A_B", joinColumns = { @JoinColumn(name = "A_ID",nullable = false) }, inverseJoinColumns = { @JoinColumn(name = "B_ID", nullable = false) })
     private List<B> bList;
 }

class B {    
    @ManyToMany(mappedBy = "bList")
    private List<A> aList;
}

现在我有2个会话访问同一个A对象。我更改了bList的{​​{1}}值并将其保存在会话1中。现在,会话2中的对象A已过时,我保存了一个对象A,其中包含对象C在陈旧状态下的引用。

我想知道为什么不将A放入cascade = {PERSIST, MERGE}注释中,保存对象@ManyToMany也会将C的陈旧状态更新回数据库,所以我在会话1中对对象A所做的更改消失了?

0 个答案:

没有答案