hibernateを使用して簡単なhello-wordishコードを作成しました
sf = new Configuration().configure().buildSessionFactory();
System.out.println("sessionFactory is built.Get session object");
s = sf.openSession();
Kk emp = (Kk) s.get(Kk.class, 1);
if (null != emp) {
System.out.println(emp.getId() + " " + emp.getNm());
} else {
System.out.println("Emp doesn't exist..");
}
このコードは正常に機能し、コンソールで以下に示すように、1つのレコードを取得します:-
sessionFactory is built.Get session object
Hibernate: select kk0_.id as id0_0_, kk0_.name as name0_0_ from kaushik1 kk0_ where kk0_.id=?
1 kaushik
しかし、Hibernate構成を介してLoadイベントリスナークラスを導入すると、レコードがフェッチされません。むしろ、クエリ自体は実行されません。
私のリスナークラスは:-
import org.hibernate.HibernateException;
import org.hibernate.event.LoadEvent;
import org.hibernate.event.LoadEventListener;
public class MyLoadListener implements LoadEventListener {
public void onLoad(LoadEvent arg0, LoadType arg1) throws HibernateException {
System.out.println("inside my own onLoad listener");
}
}
そして、hibernate.cfg.xmlに次の行を追加しました:-
<listener type="load" class="com.cts.eventlistener.MyLoadListener"/>
同じコードが呼び出されると、コンソールで確認できます:-
sessionFactory is built.Get session object
inside my own onLoad listener
Emp doesn't exist..
イベントリスナーのonLoadが呼び出されたときにクエリが呼び出されないのはなぜですか?