我在运行AccountIT测试时遇到新帐户的问题。我得到的错误是:
javax.persistence.PersistenceException:org.hibernate.PersistentObjectException:传递给persist的分离实体:no.phasfjo.dto.Customer
我认为它必须对@OnToOne
注释做一些事情,但我想知道如何正确地改变它?
答案 0 :(得分:0)
昨天我遇到了这个错误,当我在已经保存的对象上调用entityManager.persist(...);
时(因此它有一个ID)。要修复它,我不应该调用entityManager.persist(...)
,而是调用entityManager.merge(...)
。也许这与你有a.t.m的问题相同。
(pastebin并没有真正显示真正的问题,所以我猜测......我是对的吗?)
答案 1 :(得分:0)
这与您可能滥用@OneToOne
注释的事实有关。在JPA @OneToOne
中,Customer
的主键与Account
的主键相同,Login
的主键相同。由于它们是一对一的,它们不能彼此独立存在,一旦它们开始出现这些错误。
您有两种选择,
@OneToMany
或Customer
和Login
而是实例化它们,然后使用Account
和Customer
实例化Login
,最后只调用一次persist Account
永远不会Customer
或Login
。