2011-07-07 107 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標註工作。