2012-01-16 7 views
0

@Versionを使用するエンティティクラスがあります。null Hibernate @Version、なぜStaleObjectStateExceptionはありませんか?

@Version 
protected Long auditVersion; 

エンティティの最初のオカレンスを挿入しようとするスレッドが2つある場合はどうなりますか?エンティティの両方のインスタンスのauditVersionnullに設定されます。それは、Hibernateが楽観的なロック失敗の通知を取っていないようだ、私は期待したStaleObjectStateExceptionを取得しません。

どうしてですか?

答えて

1

オプティミスティックロックは、同時の更新と削除を処理するために使用されるためです。 2つのスレッドが同じIDを持つ2つのエンティティを挿入しようとすると、主キーの一意制約が競合を検出するのに十分です。このために楽観的なロックの必要はありません。

関連する問題