我的问题是我有一个包含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。有人知道会发生什么吗?
答案 0 :(得分:0)
它实际上不起作用,因为B对象的ID不是列表“list”的一部分。
您应该避免使用id来实现equals/hashCode
,当对象在List
时,合同不应该更改。无论如何,我无法使用EclipseLink 2.0重现您的问题:A
上的合并在我向列表添加B
时级联插入B
。