SpringでHibernateにコレクションを保存する

私はコレクションにプロパティを持つエンティティを保存しようとしているので、データベースにも永続化する必要があります。次の問題があります。コレクションを永続化する前にインスタンスを保存すると、次のエラーが発生します。

オブジェクトは未保存の一時インスタンスを参照します。 - フラッシュする前に一時インスタンスを保存します:asd.qwe.MyCollection;ネストされた例外はorg.hibernate.TransientObjectExceptionです:...

それ以外の場合、エンティティを保存する前にコレクションを保存しようとした場合、または list の定義に cascade = "save-update" を設定した場合、

休止動作:挿入できませんでした:[asd.qwe.MyCollection]; SQLのための未分類SQLException [entity_collections(fk_entity、field2、field3)の値(?、?、?)に挿入]; SQLステート[HY000];エラーコード[1364]。フィールド 'fk_entity'にはデフォルト値はありません。ネストされた例外はjava.sql.SQLExceptionです:フィールド 'fk_entity'にはデフォルト値がありません

これはまったく正しいことです。なぜなら、 'fk_entity'はまだ保存されていないエンティティを指し、NOT NULL制限があるからです。

私はなぜHibernateが実際のエンティティの前にコレクションを保存しようとしているのだろうかと思っていますか?そして..貯蓄の順序を逆転する可能性はありますか?

0
あなたのマッピングを共有できますか?何かが正しくないように思えます。 Hibernateは正しくマップされていれば、あなたが正しく指摘しているように、外部キー違反を避けるためにインサートを並べ替えます。
追加された 著者 Alex Barnes,

1 答え

エンティティのhbmファイルに1対多のマッピングを設定できます。エンティティを保存すると、HibernateはSetをDBに保存します。


    
    

0
追加された