@Version
Spring Data REST でJPA を使用できますか?
Spring Data REST 1.1.0.M1 では、エンティティ ID を公開するようにリポジトリ エクスポーターを構成できます。これにより、@Version
注釈付きフィールドも公開されます。PUT
そのため、古いバージョン番号のエンティティにアクセスしようとすると、 OptimisticLockException
. しかし、それは起こりません。代わりにPUT
、バージョン番号が、設定した古いバージョンではなく、常に厳密にインクリメントされることを除いて、(データの更新を含めて) 成功します。
ここで、動作が未定義であるため、バージョン番号を自分で設定することは想定されていないことを読みました。それは理にかなっている。しかし@Version
、エンティティへの参照ではなく、エンティティの JSON 表現しか持っていない場合、これは役に立たないようです。JSON 表現では、バージョン番号をサービスに送り返す必要があり、最終的にはcall setVersion()
、これは未定義の動作につながります。
状況を正しく理解していますか?@Version
Spring Data REST で使用できますか?
更新: Marten の応答を考慮して、楽観的なロック機能を実現するために JPA イベントを使用することになりました。ここにアプローチを書きました:
http://springinpractice.com/2013/09/14/optimistic-locking-with-spring-data-rest/