0

古いデータベース構造では、データを変更すると更新される 1 つのテーブルに 2 つのフィールドがあります。

create table dbo.example(
   name varchar(50),
   ...,
   changed smalldatetime,   -- here we save the last update date
   version int              -- and here we increase the number
)

聞かないでください。それはそうです:-)

現在、Eclipselink と Glassfish v3 を使用して楽観的ロックを実装しています。

@Versionアノテーションを使ってなんとかバージョンアップできました。しかし、名前フィールドが実際に変更された場合にのみ、変更されたフィールドを更新するにはどうすればよいですか。毎回変更されたフィールドを設定するだけで、JPAは毎回行を更新します。名前フィールドに実際の変更がなかったとしても。そして、名前フィールドが本当に「手」で変更されたかどうかを確認したくありません。

@Versionアノテーションを 2 番目のフィールドにも設定できますか?

4

1 に答える 1

0

見つけた:

@PreUpdate
private void update() {
    changed = new Date();
}

EntityManagerが更新を行うことを決定した場合にのみ呼び出されます。

于 2012-11-06T16:01:15.917 に答える