java - 在 JPA/EclipseLink 中保留具有顺序和重复项的列表

标签 java jpa collections persistence eclipselink

我基本上有两个实体Entity1Entity2Entity1 包含这段代码:

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

Entity2包含一些内容,但没有任何相关内容。我想向列表添加一些实例 e,最重要的是,我想向列表添加一些重复项(相同的引用)两次或多次。我仍然希望 JPA 保留两者,并且希望 JPA 保留列表的顺序。

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

我该如何解决这个问题?

最佳答案

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

请为错误投票, https://bugs.eclipse.org/bugs/show_bug.cgi?id=256978

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

关于java - 在 JPA/EclipseLink 中保留具有顺序和重复项的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15690347/

相关文章:

java - 无法反序列化来自具有蛇形属性的 kafka 主题的 json 字符串

java - 可以显式删除对 lambda 的序列化支持

java - 使用 LocalDateTime 的“AttributeConverter 和显式类型不能应用于同一属性”

c# - 多值字典?

java - 在 Java 中使用迭代器的多个 If 条件

php - 如何查询laravel采集结果

java - 多选 NPE 中的 JPA/Hibernate 函数

java - 从不同的日期字符串格式生成 INSTANT

java - 如何返回 JPA 中最大 Collection 的大小?

java - 有没有办法使单个 JPA 实体中两个外键的组合唯一?