hibernate 具有给定标识符的多行
hibernate More than one row with the given identifier
所以我知道这个问题看起来是重复的。但事实并非如此。我有一个单元测试并且我 运行 它并且我得到这个错误:
存在具有给定标识符的不止一行。所以我在它发生的地方放了一个断点,然后当它冻结在我评估它的线上时,果然我得到了错误。如果我立即第二次评估它……错误消失了,我得到了我期待的单一结果。几乎就像休眠以某种方式与自身不同步一样。另外我只从单元测试中得到这个错误。
有没有人有过类似的经历?我试过 .flush(), .clear()
和其他各种方法。当测试不是 运行ning 时,数据库中根本没有记录,其 id 告诉我是重复的。
哈利路亚!我发现了问题。显然我在测试本身的 setup() 方法中有一些 DAO.clear()
调用。我不确定他们在那里做什么。或者说拥有它们到底会如何导致休眠出现它所显示的问题。但是,一旦我从测试设置数据中删除了 Hibernate .clear()
调用,错误就会一起消失。我猜没有太多 people/projects 使用 Hibernate clear()
调用,所以也许我发现了一些与之相关的奇怪错误。 注意 clear()
.....
尝试检查实体关系@OneToOne
,两个实体之一将包含两条记录,因此将无法通过 ID 查找或加载,结果将是双记录。
所以我知道这个问题看起来是重复的。但事实并非如此。我有一个单元测试并且我 运行 它并且我得到这个错误:
存在具有给定标识符的不止一行。所以我在它发生的地方放了一个断点,然后当它冻结在我评估它的线上时,果然我得到了错误。如果我立即第二次评估它……错误消失了,我得到了我期待的单一结果。几乎就像休眠以某种方式与自身不同步一样。另外我只从单元测试中得到这个错误。
有没有人有过类似的经历?我试过 .flush(), .clear()
和其他各种方法。当测试不是 运行ning 时,数据库中根本没有记录,其 id 告诉我是重复的。
哈利路亚!我发现了问题。显然我在测试本身的 setup() 方法中有一些 DAO.clear()
调用。我不确定他们在那里做什么。或者说拥有它们到底会如何导致休眠出现它所显示的问题。但是,一旦我从测试设置数据中删除了 Hibernate .clear()
调用,错误就会一起消失。我猜没有太多 people/projects 使用 Hibernate clear()
调用,所以也许我发现了一些与之相关的奇怪错误。 注意 clear()
.....
尝试检查实体关系@OneToOne
,两个实体之一将包含两条记录,因此将无法通过 ID 查找或加载,结果将是双记录。