2010-06-25 56 views
1

我的问题是,我有一个包含B的对象列表合并后冲水()问题的实体

@Entity 
class A { 

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

} 

当我做“合并”的对象A的,然后调用“的对象的刷新”无状态EJB方法

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

内心里却不起作用。没有设置“list”的B对象的ID。

但坚持和冲洗工作

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

的“清单” B对象的ID被设定。

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

+0

由于下面答案中的噪音(有些朋友?),我不知道这个问题是否严重,直到我得到确认,我不会花更多时间在它上面。如果这些人是你的朋友,你应该教育他们一点。 – 2010-06-25 23:40:21

+0

这个问题是某种垃圾邮件磁铁。 – bmargulies 2010-06-26 00:25:01

+0

@Pascal,@bmargulies;清洁并防止进一步的愚蠢。谢谢你的旗帜。 – 2010-06-26 00:26:44

回答

0

它实际上不起作用,因为B obes成为列表“列表”的一部分没有设置。

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