没有用Hibernate触发的JPA拦截器/事件监听器

时间:2011-07-07 16:11:19

标签: java hibernate orm jpa listener

@PostLoad 
public void initThing() { ... }

我将它添加到我的实体,但它似乎在实体加载它没有被调用...

我在没有EJB的spring上下文中使用jpa Hibernate 3.2.7

我们已经在会话工厂的“entityInterceptor”中声明了一些hibernate拦截器(扩展了EmptyInterceptor)

是否可以混合两种类型的拦截器?

是否可以在没有EJB / EntityManager的情况下使用@PostLoad?

另一个原因?

2 个答案:

答案 0 :(得分:1)

如果没有EJB / EntityManager,我不相信EJB注释。

答案 1 :(得分:0)

对于那些感兴趣的人,我收到了Steve Ebersole的回复,看来当你创建自己的hibernate SessionFactory时,你不能使用像@PostLoad这样的JPA注释而不在该会话工厂中注册相应的EventListener ...... 实际上,实体经理系统会为您完成所有这些工作。

所以我想我必须将EJB3PostLoadEventListener添加到会话工厂

但是在我的情况下,我必须为我的子项目提供这个,我将使用一个hibernate拦截器,因为它们可以是会话作用域,并且还在一个覆盖的Spring HibernateTemplate声明中注入了这个拦截器