「タイトル」プロパティを持つ一連の記事オブジェクトがあるとします。次に、TITLE 列を持つ ARTICLE テーブルがあります。TITLE 列には一意制約があります。
UI では、1 ページにすべての記事が表示され、タイトルを編集するためのテキスト フィールドが表示されます。
2 つの記事 X と Y があり、X のタイトルが「1」で、Y のタイトルが「2」である状況を想像してください。このページで、Y の名前を「2」に、X の名前を「1」に変更してから、フォームを送信します。フォームから値を hibernate オブジェクトに直接コピーして保存すると、 ConstraintViolationException が発生します。
コレクションから「1」の記事を削除し、「1」というタイトルの別の記事を追加してコレクションを保存した場合にも発生します。
では、この Hibernate の癖に対処する最善の方法は何でしょうか? UIか何かを再配置する必要があるような気がします。休止状態のオブジェクトを保存する前にこれらの条件を手動でチェックするのは少し面倒です。