2011-07-07 63 views
0
@PostLoad 
public void initThing() { ... } 

火我补充说,我的实体,但它似乎对实体加载它不叫......JPA拦截器/事件侦听器,不使用Hibernate

我使用JPA上没有EJB弹簧上下文 的Hibernate 3.2.7

我们已经有了(延伸EmptyInterceptor)一些休眠的拦截器内声明的会话工厂

的“entityInterceptor”是否有可能以两种风格拦截混?

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

另一个原因?

回答

0

对于那些有兴趣的人,我收到了Steve Ebersole的回复,看起来当你创建自己的hibernate SessionFactory时,你不能使用@PostLoad这样的JPA注释,而不在该会话工厂注册相应的EventListener ... 其实实体管理系统为你做这些事情。

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

但在我来说,我不得不做出这个可以只是我的子项目,我会使用Hibernate的拦截器,因为它们可以会话范围,并且还将此拦截器注入到覆盖弹簧中HibernateTemplate声明

+0

如果您想要JPA功能,为什么不首先使用hibernate-entitymanager?你仍然可以使用专有的休眠的东西,如果你绝对需要... –

+0

因为我们在一个大型项目上工作,我不是architech,我不能轻易地在我自己的核心上改变事物 –

1

我不相信没有EJB/EntityManager的EJB标注工作。