私はこの質問を投稿してからしばらくしていますが、わかりました。他の人に役立つように私がしたことを説明します。
注釈@Version
はjavax.persistenceインターフェイスであり、前に述べたspring-data rest jpaフレームワークではありません。
あなたは@Versionを利用したい場合は、そのようなあなたのドメインオブジェクト内のバージョンフィールドを作成する必要があります:あなたはそれを自動的にピックアップ注釈休止状態にし、それが作成されます使用している場合
@Version
@Column(name = "VERSION")
private long version;
あなたの(私の場合はMySql)テーブルの "バージョン"の行。レコードが更新されるたびに、休止状態は1でカウンタをインクリメントします。
これはなぜ必要なのですか?あなたがこれを使用したい理由は、クライアントがstale dataで働いている可能性が減るからです。クライアントがあなたから情報を取得するたびに、彼は要求されたデータをバージョンに提供します。例えば
{ <-- School entity -->
"id": 1,
"version": 0,
"name": "De regenboog",
"street": "Plantaanstraat",
"number": "2",
"zipCode": "1234AS",
"city": "Amsterdam"
}
クライアントがこの特定のレコードに関する情報を変更したい場合、新しい情報とバージョン値を送信します。この場合、学校の名前を変更しましょう。
{ <-- School entity -->
"id": 1,
"version": 0,
"name": "Stackoverflow",
"street": "Plantaanstraat",
"number": "2",
"zipCode": "1234AS",
"city": "Amsterdam"
}
Hibernateはあなたの情報を含むクエリを作成し、追加の 'where'節を追加してバージョンを確認します。 update .... where id = 1 and version = 0
。行が更新された場合は、正しいバージョンを提供したことを意味し、情報を要求した時点から変更した時点までに特定の情報が変更されたことはありません。いい?
行が更新されない場合はどうなりますか?あなたが情報を要求した後、あなたが素早いバスルームで休憩している間に、誰かがその列を更新したということです。あなたのバージョンは古くなっています!今起こる必要があるのはユースケース固有のものなので、詳細については触れません:)
誰かがこの情報を使用したいと思っています!
おかげで、すべての
私は確かに私を助けました。ありがとう – kalz