【发布时间】:2013-02-05 22:09:10
【问题描述】:
我定义了以下关系
实体 A 与实体 B 具有 @OneToMany,实体 B 具有 @OneToOne 与实体 C。
在创建实体 A 时,我还创建了实体 B 并设置了它们之间的关系。一切都按预期工作。
在另一笔交易中, - 从数据库中获取实体 A,获取相应的实体 B,然后 - 创建实体 C。 - 实体 C 设置在实体 B 上,以伪造两者之间的关系。 如果我使用 EntityManager.persist(Entity B),持久性管理器会尝试将实体 B 再次插入数据库,从而导致对实体 B 的 PK 的唯一约束违反。 如果我使用 EntityManager.merge(Entity B),一切都按预期工作。
在上述使用环境中,为什么要持久化操作尝试创建副本,因为在这种情况下管理实体并且它应该可以轻松进行更新。
【问题讨论】:
标签: jpa-2.0 eclipselink