主キーとして複合キーを使用するJPA/Hibernateオブジェクトがあります。データベースからオブジェクトを読み取って更新しようとしています。
主キーが(idとname)であり、データベースに次の行が存在するとします。
1 john London
2 bob Birmingham
3 Dave Kent
キー(1、john)を使用してオブジェクトをロードすると、すべてが正常に機能します。同じプライマリを使用してロードしたが、(1、John)を使用してケースが異なる場合、次の例外が発生します。
org.hibernate.HibernateException: identifier of an instance of Document was altered from com.myPck.test1.documentsPK[ Id=1, msgOwner=john ] to com.myPck.test1.documentsPK[ Id=1, msgOwner=John ];
行をロードした後、JPQLを使用して更新しますが、主キー列を更新しません。興味深いことに、存在しない行を検索しても、その例外は発生しません。存在する行を検索した場合にのみ発生しますが、キーで使用されている大文字と小文字が実際にデータベースにあるものとは異なります。
これを引き起こしている可能性があり、どうすれば解決できますか?
ありがとう