有两个名为Employee和Order的表。 表Employee(1) - (*)Order之间的关系。 此外,Order还有两个来自Employee的FK,名为EmployeeEncoder和EmployeeUpdater。
我正在使用JDK 7在Netbeans 7.0下使用EclipseLink(JPA 2.0)。
为记录的员工创建订单并不麻烦。 在更新订单和设置EmployeeUpdater,其中EmployeeEncoder等于EmployeeEncoder时,Employee记录是重复的。
我怎么能以某种方式解决这个线程,这样就无法复制EmployeeUpdater上的记录?
答案 0 :(得分:1)
当您持久保存新订单时,它应该从同一个持久化上下文(EntityManager)引用一个Employee。尝试为Employee执行find()并将Order的员工设置为该。您也可以使用merge()而不是persist。
答案 1 :(得分:0)
您可能正在设置Employee对象,其主键值为null或0为Order。所以你有重复的员工。您可能希望使用IDE进行调试以查看值。
将Order的级联类型设置为CascadeType.MERGE