2012-02-14 47 views
1

是否有Hibernate 4版本org.springframework.orm.hibernate3.support.IdTransferringMergeEventListener當使用Spring 3.1和休眠4時替代IdTransferringMergeEventListener 4

我試圖將我的Spring 3.0.x + Hibernate 3.6應用程序升級到Spring 3.1 + Hibernate 4,但似乎無法找到如何更新它。

這是專門在我的applicationContext引用爲這樣:

<property name="eventListeners"> 
     <map> 
     <entry key="merge"> 
      <bean 
      class="org.springframework.orm.hibernate3.support.IdTransferringMergeEventListener" /> 
     </entry> 
     </map> 
</property> 

只是把它當作就是導致異常:

Caused by: java.lang.ClassNotFoundException: org.hibernate.event.def.DefaultMergeEventListener 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1678) 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1523) 

大概是因爲Hibernate 4不具備類DefaultMergeEventListener

在此先感謝。

回答

4

它看起來像類移到org.hibernate.event.internal.DefaultMergeEventListener

+0

是啊,所以我想我可以創建自己的類,從3.0.x的複製泉IdTransferringMergeEventListener類,但採用了新的Hibernate 4類DefaultMergeEventListener。我很驚訝Spring雖然沒有創建Hibernate 4兼容版本。不知道它是一個疏忽還是它的功能是由另一個機制處理的。 – Josh 2012-02-22 16:12:21

3

春季人們決定不再在春季實施這一對Hibernate 4

從錯誤報告:https://jira.springsource.org/browse/SPR-9634

我們特意讓Spring的Hibernate的4支持相當小,以便保持接近原生Hibernate 4種做事方式。因此,我們沒有計劃重新引入IdTransferringMergeEventListener或我們以前的任何LOB用戶類型,它們都是專用類來解決Hibernate應該真正解決的問題 - 因爲它們與Spring無關並且導致重複維護令人頭疼的一面。

當然,您可以基於Spring的舊版IdTransferringMergeEventListener創建自己的版本。但是請注意,在Hibernate 4中,事件監聽器的註冊方式已經發生了變化:這在每個SessionFactory級別上都是不可能的,因此Spring在它的LocalSessionFactoryBean中也不支持。有關詳細信息,請查看相應的Hibernate文檔以及Hibernate JIRA上的相應報告。

克林斯曼