org.hibernate.AssertionFailure entry


AssertionFailure: null id in xxx entry (don't flush the Session 
after an exception occurs

org.hibernate.AssertionFailure entry null id in entry(don't flush the Session after an exception occurs)異常
 
このエラーはidが空になったように見えます.
 
解決:データの空でないフィールドに値を設定していません.
 
もう一つの理由があります
それは、メソッドがトランザクションを追加していないことです.
 
私はサービスに対してトランザクションブロックを行っただけで、daoに対してトランザクションaopを行わなかった.
 
Actionでdaoを直接呼び出すと、データベースに正常にデータが挿入されていますが、上記のエラーが表示されます.
 
これは、データベースを挿入する際に、データベースに自己IDを追加するプライマリ・キー・ポリシーがあり、hibernateがflushの場合、modelのidが空であることが判明したためです.
なぜ空なのかというと、トランザクションがなく、hibernateプライマリ・キー・ポリシーが実行されていません.
 
しかし、なぜデータベースを正常に挿入できるのか、研究中です..