[jpa:103] Re: HibernateのEventListenerについて

Toshihiro Nakamura [E-MAIL ADDRESS DELETED]
2008年 5月 25日 (日) 13:18:00 JST


中村(taedium)です。

> 現在、「Seasar2とHibernateで学ぶデータベースアクセス JPA入門」と言う本で
> JPAを学習しながら、簡単なWebアプリケーションを作成しています。

ありがとうごさいます。
著者です(^^

> しかし、marriedとhasForeignCarのどちらのプロパティが変更されたのかを
> 判断する方法がわかりません。

次のようなメソッドをListenerに用意することで
判断できるようになります。

protected int getPropertyIndex(PostUpdateEvent event, String propertyName) {
  EntityPersister persister = event.getPersister();
  String[] names = persister.getPropertyNames();
  for (int i = 0; i < names.length; i++) {
    if (propertyName.equals(names[i])) {
      return i;
    }
  }
  throw new PropertyNotFoundException(propertyName);
}

このメソッドが返す値は、PostUpdateEventクラスの
getStateメソッドや、getOldStateメソッドが返す配列の
インデックスに使えます。
marriedやhasForeignCarなどのプロパティ名を指定して
呼び出してください。
得られたインデックスで配列から値を取り出して比較
できると思います。
-- 
Toshihiro Nakamura



jpa メーリングリストの案内