Oracleドライバは正しい行数を返す必要があります。そうでない場合、私は驚かれることでしょう。ドライバからの結果が正しいことを確認できましたか?Hibernateログをオンにしてこれを確認できます。
確認すべき点がいくつかあります:
-
DBに送信されている実際のSQLをログに記録し、バージョン列がwhere句に記載されていることを確認します。 SQLがバッチ処理をオンにしたHibernateロギングによってログに記録されるかどうかわからない場合は、SQLをログに記録する別の方法(p6spyなど)に頼らなければならない場合があります
-
同時更新中に行数が正しく返される場合、アプリケーションは正常に機能しています。バージョン列の値が更新されて修正されていることを確認して、これを確認します。
更新 次のリンクによると、この問題は11gまでOracleドライバーに存在し、バージョン12cで修正されました
https://hibernate.atlassian.net/browse/HHH-3360
以前のOracleバージョンには、役立つはずの追加情報がいくつかあります。つまり、カスタムソリューションが提供されています。
その他のリソース: https://hibernate.atlassian.net/browse/HHH-5070 >