オブジェクトは保存されていない一時インスタンスを参照します-フラッシュする前に一時インスタンスを保存します
Object References An Unsaved Transient Instance Save Transient Instance Before Flushing
エラーメッセージ:
org.hibernate.TransientPropertyValueException:オブジェクトは保存されていない一時インスタンスを参照します-フラッシュする前に一時インスタンスを保存します:Entity1-> Entity2
Entity1とEntity2の関係:
@ManyToOne @JoinColumn(name = 'entity2_id') private Entity2 entity2
原因分析:
分析後、hibernateは、Entity1の情報を保存するときにEntity1に関連付けられたentity2オブジェクトが非永続状態にあることを検出し、保存時にエラーが報告されます。
ソリューション思考:
データストレージにHibernateを使用する場合、保存する必要のある永続オブジェクトAは他のデータテーブル永続オブジェクトBに関連付けられます。その場合、Hibernateのセッション管理下のオブジェクトBの状態は永続またはnullである必要があり、両方で問題が発生します。一時的な状態と管理されていない状態。したがって:
- 関連するオブジェクトBが不要な場合は、Bをnullに設定します。
- 関連するオブジェクトBがそれを必要とする場合は、queryメソッドを再度呼び出してオブジェクトBにクエリを実行し、Bを永続状態にしてから、Aオブジェクトを保存します。