在JPA / EclipseLink中保留包含订单和重复项的列表

时间:2013-03-28 19:19:14

标签: java jpa collections persistence eclipselink

我基本上有两个实体Entity1Entity2Entity1包含以下代码:

@OneToMany(cascade=CascadeType.PERSIST)
@OrderColumn
List<Entity2> e = new LinkedList<Entity2>();

Entity2包含一些内容,但没有任何相关内容。我想在列表e中添加一些实例,最重要的是我想在列表中添加一些重复项(相同的引用)两次或更多次。我仍然希望JPA能够持久保存,我希望JPA能够保持列表的顺序。

到目前为止,如果我只添加唯一的项目,这是有效的。如果我添加一个副本,JPA实际上想要保留正确的数据(ID od Entity1,Entity2的ID和顺序),但由于关系表的主键只有两个ID,JPA会抛出一个重复的主键错误。 / p>

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

EclipseLink目前不支持OneToMany关系的重复项。重复是对(基本)ElementCollection映射的支持。

请投票给bug, https://bugs.eclipse.org/bugs/show_bug.cgi?id=256978

最佳解决方案是将连接表映射到另一个实体,并为其定义1-m,目标为1-1。