私は2.5を使用しており、注釈を介してすべてを行っています。
ユーザーがオブジェクトを編集できる簡単なフォームがあります。その背後にあるコントローラーは、オブジェクトを作成してGETでモデルに追加し、POST(送信)で変更を処理します。正常に動作しますが、理由がわかりません。オブジェクトがセッションに明示的に追加されることはなく、オブジェクトの「id」が送信メソッドに渡されることもありません。コントローラのsubmitメソッドは、オブジェクトの「id」値をどのように認識しますか?
この質問が出た理由は、上記のものとほぼ同じ別のフォーム/コントローラーがありますが、オブジェクトを@SessionAttributesに追加しない限り「機能」しないためです。違いは、この特定のコントローラーが動作するオブジェクトには、遅延ロードされた別のオブジェクトへの参照があることです(私は舞台裏でHibernateを使用しています)。親オブジェクトをSessionAttributesに配置せずにフォームを送信すると、参照オブジェクトをロードしないため、DataIntegrityViolationExceptionが発生します。
親オブジェクトを@SessionAttributesに追加すると、問題は魔法のように消えます。親オブジェクトをGETのセッションに入れても、参照オブジェクトを明示的にロードしたことがないため、魔法のように言います。したがって、null(または空のプロキシなど)である必要があります。
世界で何が起こっているのですか?助けが必要です!