使用分离实体纠正 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中文网其他相关文章!