分離されたエンティティを使用した 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; }
以上が分離されたエンティティで Hibernate の PersistentObjectException を修正する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。