首页 >Java >java教程 >如何修复 Hibernate 与分离实体的 PersistentObjectException?

如何修复 Hibernate 与分离实体的 PersistentObjectException?

Linda Hamilton
Linda Hamilton原创
2024-12-30 14:39:10520浏览

How to Fix Hibernate's PersistentObjectException with Detached Entities?

使用分离实体纠正 Hibernate 中的 PersistentObjectException

处理 JPA 持久对象模型时,某些操作可能会导致 PersistentObjectException ,尤其是在管理关系时。例如,在帐户和多个交易之间存在多对一关系的情况下,尝试使用已持久化的帐户来持久化交易可能会触发此异常。

了解根本问题至关重要。当您创建事务并指定现有帐户时,该帐户被视为与实体管理器分离。出现这种情况是因为您从与持久化事务的上下文不同的上下文中检索帐户。

要解决此问题,请将事务注释中的级联类型调整为 CascadeType.MERGE。这确保了当事务持久化时,关联的帐户将被合并到当前的实体管理器上下文中,从而解决分离问题。

这是更新的代码片段:

@Entity
public class Transaction {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    @ManyToOne(cascade = {CascadeType.MERGE}, fetch = FetchType.EAGER)
    private Account fromAccount;
}

通过实现通过这些更改,您将能够成功地使用已持久化的帐户来持久化事务,从而消除 PersistentObjectException。

以上是如何修复 Hibernate 与分离实体的 PersistentObjectException?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn