Hibernate を使用してオブジェクトを保存しようとすると、次のエラーが発生する場合があります:
object references an unsaved transient instance - save the transient instance before flushing
を理解するエラー
このエラーは、データベースに存在しない 1 つ以上の項目を含むコレクションがエンティティ内にあることを示します。 Hibernate では、他のエンティティによって参照されるすべてのエンティティがデータベースに保存 (永続化) されるか、一時的としてマークされる必要があります。
解決策
このエラーの解決策は、次のように指定することです。コレクション マッピングのカスケード オプション。これは、XML または注釈を使用して行うことができます:
XML:
<collection name="collectionName" cascade="all"> ... </collection>
注釈:
@OneToMany(cascade = CascadeType.ALL) private List<ChildEntity> collectionName;
説明
作成者cascade="all" または CascadeType.ALL オプションを指定すると、親エンティティを保存するときにコレクション内のすべてのエンティティをデータベースに保存するように Hibernate に指示します。これにより、参照されたすべてのエンティティがデータベースに確実に保持され、エラーが解決されます。
以上がHibernate の「オブジェクト参照が保存されていない一時インスタンス」エラーを解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。