合并实体后出现Flush()问题

时间:2010-06-25 21:50:58

标签: java orm jpa eclipselink

我的问题是我有一个包含B对象列表的对象A

@Entity
class A {

   @OneToMany(cascade={CascadeType.MERGE})
   List<B> list;

}

当我对对象A进行“合并”,然后在无状态EJB方法中调用“flush”时

em.merge(a); //a is of class A
em.flush(); //doesn't flush "list"

它实际上不起作用。未设置“列表”的B对象的ID。

但坚持和冲洗工作

em.persist(a);
em.flush(); // it works!

设置“list”的B对象的id。

我正在使用EclipseLink。有人知道会发生什么吗?

1 个答案:

答案 0 :(得分:0)

  

它实际上不起作用,因为B对象的ID不是列表“list”的一部分。

您应该避免使用id来实现equals/hashCode,当对象在List时,合同不应该更改。无论如何,我无法使用EclipseLink 2.0重现您的问题:A上的合并在我向列表添加B时级联插入B