我刚注意到我工作的一部分代码会将同一个实体保存两次。 我尝试了几个技巧,比如flush()和Transaction REQUIRES_NEW,但没有做到。 但是在调用persist(entity)之后我可以看到调试时,我得到了该实体的ID(IDENTITY)......但是如果我看一下变量,我会看到同一个实体不同的ID和两个带有表中ID的迭代。
这是使用Java EE 6和Glassfish 3.0.1
答案 0 :(得分:1)
您使用的是哪个JPA提供商?什么版本?
启用日志记录(最好)并包括发生的日志。
如果使用EclipseLink启用日志记录,请参阅
http://wiki.eclipse.org/EclipseLink/Examples/JPA/Logging
为对象的ID分配了什么值,请检查以确保它是> 0。 还要确保使用IDENTITY列生成数据库中的表。 你在用什么数据库?
尝试使用TABLE测序来查看它是否与IDENTITY测序有关。
还包括您的课程的源代码。