2011-10-03 11 views
7

私は顧客保守アプリケーションを開発しました。ユーザーはウェブインタフェースを介して顧客の詳細を変更することができます。私は以下のシナリオを処理したいと考えています:Hibernate自動バージョニング

  1. User 1ロードcustomer1詳細。
  2. User 2ロードcustomer1詳細。
  3. User 1customer1nameを変更して保存します。
  4. User 2customer1の年齢のみが変更され、保存されます。上記のシナリオでは

の更新「User 2User 1が上書きされるための古い名前と新しい時代」、最後にデータベースがcustomer1を保持しています。私は休止状態を使用しています。私は、Hibernate Automatic Versioningがこれをサポートしていると聞いていました。誰かがこれを処理する方法を知っていれば私に助言してください。

答えて

12
を比較するために、修正タイムスタンプを使用することができますする傾向が一つの解決策、

あなただけ@Versionで注釈を付けフィールドを追加する必要があります。詳細については、

public class Customer { 

@Id 
private Long id; 

@Version 
private Long version; 

// rest of the fields, etc. 

} 

読むthis記事。

+0

Java Projectで任意のORMでSpringJDBCを使用します。しかし、そこに書かれたような状況を防ぐために、Hibernateの@Version機能を追加する必要があります。だから、私はJDBCの実現を提案することができますか? – MeetJoeBlack

+0

このアプローチの一般的な用語は、_optimistic locking_と呼ばれます。ここでいくつかのガイダンスを見つけることができます:http://stackoverflow.com/a/8880896/309683 – Behrang

0

2番目の要求は、最初の詳細を更新、ロード細部後に更新されたかどうかを確認するので、その後、例外を発生し、ユーザーが再び詳細をロードした後に変更することができた場合、あなたは

関連する問題