【问题标题】:Detached Entity Passed to Pesist when Using EntityManager使用 EntityManager 时传递给 Persist 的分离实体
【发布时间】:2012-09-20 05:18:15
【问题描述】:

我有两个实体映射为一对多关系。我在 ID 为 1,2 的数据库中保留两个对象

同类型

场景 1. 我正在尝试使用 getEntityManager.remove(object1) 删除 ID '1',它显示

分离的实体传递给子实体持久化..甚至找到数据库记录。

场景 2. 当我尝试使用 getEntityManager.remove(object2) 删除 ID '2' 时,它会删除记录 2。

此异常仅发生在同一时间输入记录之前。

关闭并重新打开页面后,我从 Db 中删除了 ID 1,2,它已成功运行。

【问题讨论】:

  • 请修正您的格式,向我们展示代码,以及异常的堆栈跟踪。
  • 感谢 JB Nizet 先生的回复。我可以上传代码,请告诉我 sol。

标签: java hibernate jpa jpa-2.0 entitymanager


【解决方案1】:

com.manam.mobee.persist.entity.MobeeLabelTemplate#null

检查deleteLabel() 中的mobeeLabel.getMobeeLabelTemplates() 并确保它们具有id


编辑:

您需要对象中的 id 来更新和删除。在删除 mobeeLabel 之前,执行 findById 然后将其删除。应该有一些未插入的 mobeeLabelTemplates(或未更新 - id 与数据库不同步)。试试这样的:

MobeeLabel freshMobeeToDelete = (MobeeLabel) getEntityManager().find(MobeeLabel.class, mobeeLabel.getId());
getEntityManager().remove(freshMobeeToDelete);

【讨论】:

  • IN deleteLabel() 我得到了 mobeeLabel.getMobeeLabelTemplates() 对象。但是假设我第一次将数据库添加到三个对象时,它会抛出异常分离同时我正在删除一个或两个对象它的显示分离,假设我删除了它检测到的第三个对象。
  • 感谢您的回复。我现在将检查它,但仍然出现相同的异常。最后一条记录正在删除,但以前保存的记录没有被删除,但是当我重新加载页面时,它的工作正常
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-30
  • 2011-09-16
  • 2015-04-22
相关资源
最近更新 更多