[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 メーリングリストの案内