[jpa:100] HibernateのEventListenerについて
Yuu Nagasawa
[E-MAIL ADDRESS DELETED]
2008年 5月 25日 (日) 09:42:45 JST
はじめまして。
長澤と申します。
現在、「Seasar2とHibernateで学ぶデータベースアクセス JPA入門」と言う本で
JPAを学習しながら、簡単なWebアプリケーションを作成しています。
JPAの範囲ではなく、Hibernateの機能になってしまうのですが、
質問させてください。
次のPersonエンティティがあります。
@Entity
public class Person {
@Id @GeneratedValue
private Long id;
private String name;
private Boolean married;
private Boolean hasForeignCar;
......
}
2つのBoolean型プロパティmarriedとhasForeignCarが変更された場合、
変更されたプロパティとその値によって
更新履歴テーブルに次のようなメッセージを登録したいと思っています。
「(married|hasForeignCar)が(true|false)に変更されました。」
同時に2つのプロパティが変更された場合は、
2件の更新履歴ログを登録します。
これを実現する方法はいくつかあると思いますが、
こちらの過去ログを拝見しまして、
HibernateのEventListenerを使ってみようかと思いました。
http://ml.seasar.org/archives/jpa/2007-April/000006.html
しかし、marriedとhasForeignCarのどちらのプロパティが変更されたのかを
判断する方法がわかりません。
public class PersonPostUpdateEventListener extends
EJB3PostUpdateEventListener {
@Override
public void onPostUpdate(PostUpdateEvent event) {
super.onPostUpdate(event);
//変更後のエンティティ
log.debug("event.getEntity():" + event.getEntity());
//変更前の各プロパティの値が格納されている
//配列のどの要素がmarried, hasForeignCarに対応するのか?
Object[] oldState = event.getOldState();
//変更後の各プロパティの値が格納されている
Object[] state = event.getState();
......
この場合、どのように判断したらよいのでしょうか?
よろしくお願い致します。
以上です。
-------------- next part --------------
HTMLの添付ファイルを保管しました...
URL: <http://ml.seasar.org/archives/jpa/attachments/20080525/370473de/attachment.html>
jpa メーリングリストの案内