hibernate具有给定标识符的多行

时间:2015-08-13 23:17:12

标签: hibernate junit

所以我知道这些问题看起来像是重复的。但事实并非如此。我有一个单元测试,我运行它,我得到这个错误: 存在具有给定标识符的多个行。所以我给它发生了一个断点,然后当它在线上冻结我评估它并且确定我得到了错误。如果我第二次立即评估它......错误消失了,我得到了我期待的单一结果。它几乎就像hibernate以某种方式与自身不同步。此外,我只从单元测试中得到此错误。 有没有人有类似的经历?我尝试了.flush(), .clear()和各种其他事情。当测试没有运行时,数据库中根本没有任何记录,它告诉我的id是重复的。

2 个答案:

答案 0 :(得分:0)

哈利路亚!我发现了这个问题。显然,我在测试本身的setup()方法中有一些DAO.clear()次调用。我不确定他们在那里做什么。或者如何使用它们会导致hibernate出现它正在显示的问题。但是,一旦我从测试设置数据中删除了Hibernate .clear()调用,错误就会消失。我猜测没有太多人/项目使用Hibernate clear()调用,所以也许我发现了一些与之相关的奇怪错误。 请注意clear() .....

答案 1 :(得分:0)

尝试检查实体关系@OneToOne,其中一个实体将包含两个记录,因此无法通过ID查找或加载,因为结果将是双记录。