我相信我希望删除的实体是一个托管实体。但是,无论如何,为什么合并它然后删除它给我以下错误:
传递给合并的已删除实例
有人在 stackoverflow 上说,如果合并是托管实体,则应忽略合并。那么为什么这不被忽视呢?
我希望删除它的方式是这样的:
TrialUser mergedEntity = em.merge(tu);
em.remove(mergedEntity);
但是这个错误,但是如果我去掉第一行它似乎工作正常。但我想要另一种方式,因为这与代码的其余部分一致。
编辑:
@PersistenceContext(unitName = "UnitName")
protected EntityManager entityManager;
@Table(name="TRIAL_USER")
@Id
private BigDecimal id;
@ManyToOne(cascade= {CascadeType.ALL }, fetch=FetchType.EAGER)
@JoinColumn(name="TRIAL_USER_CLASS_ID3")
private TrialUserElement trialUserElement3;
@ManyToOne(cascade= {CascadeType.ALL }, fetch=FetchType.EAGER)
@JoinColumn(name="TRIAL_USER_CLASS_ID1")
private TrialUserElement trialUserElement1;
@ManyToOne(cascade= {CascadeType.ALL }, fetch=FetchType.EAGER)
@JoinColumn(name="TRIAL_USER_CLASS_ID2")
private TrialUserElement trialUserElement2;
原文由 Rika 发布,翻译遵循 CC BY-SA 4.0 许可协议
当您在事务中运行一些代码时,当您在方法的末尾提交时,您可能会遇到此错误。在注释为的方法或类中使用 spring 时
发生这种情况是因为您首先删除了对象(未提交),然后尝试更新它。
此代码将生成异常:
为避免错误,您不应在同一事务中删除然后保存。