【问题标题】:org.hibernate.PersistentObjectException: detached entity passed to persist - ManyToMany Mappingorg.hibernate.PersistentObjectException:分离的实体传递给持久化 - 多对多映射
【发布时间】:2017-05-10 07:48:22
【问题描述】:
- 我有实体 Patient 和实体 Test。
- 两者之间存在多对多关系。
- 我在两边都添加了 CASCADE_TYPE=ALL。
- 我正在使用 Hibernate EntityManager 的 persist(Patient);方法。
- 当我执行它时抛出“org.hibernate.PersistentObjectException: detached entity pass to persist: Test”
- 这些是屏幕。
病人类
测试类
如果有人有解决方案,请分享。
谢谢。
【问题讨论】:
标签:
java
spring
hibernate
jpa
spring-security
【解决方案1】:
merge 和 persist 对你的实体做完全不同的事情。您真的确定合并完成了您最初打算做的事情吗?
(见this topic over here)
没有看到您为持久化test - 实体而编写的代码,我无法真正告诉您出了什么问题,但我可以想象它与您那里的多对多关系有关。您确定要 cascade.ALL 吗?如果您从数据库中删除test-instance,级联将删除该列表中的每个patient。
然后,对于该列表中的每个 patient,它将 cascade.REMOVE 每个 test
在List<test>。
【解决方案2】:
谢谢。我将它从 em.persist() 更改为 em.merge()。工作正常。
【解决方案3】:
我建议尝试修改CASCADE_TYPE=PERSIST。