来自相同表的JPA Multiple FK

时间:2011-05-03 08:29:51

标签: java jpa jpa-2.0 eclipselink

有两个名为Employee和Order的表。 表Employee(1) - (*)Order之间的关系。 此外,Order还有两个来自Employee的FK,名为EmployeeEncoder和EmployeeUpdater。

我正在使用JDK 7在Netbeans 7.0下使用EclipseLink(JPA 2.0)。

为记录的员工创建订单并不麻烦。 在更新订单和设置EmployeeUpdater,其中EmployeeEncoder等于EmployeeEncoder时,Employee记录是重复的。

我怎么能以某种方式解决这个线程,这样就无法复制EmployeeUpdater上的记录?

2 个答案:

答案 0 :(得分:1)

当您持久保存新订单时,它应该从同一个持久化上下文(EntityManager)引用一个Employee。尝试为Employee执行find()并将Order的员工设置为该。您也可以使用merge()而不是persist。

答案 1 :(得分:0)

您可能正在设置Employee对象,其主键值为null或0为Order。所以你有重复的员工。您可能希望使用IDE进行调试以查看值。

将Order的级联类型设置为CascadeType.MERGE