2017-07-16 207 views
0

我更新我的Hibernate 3版5,我有我的应用程序方面,我有以下豆事件侦听器5

<bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean" 
      p:mappingResources="standard.hbm.xml"> 
     <property name="dataSource" ref="dataSource" /> 
     <property name="hibernateProperties"> 
      <props> 
       <prop key="hibernate.dialect">${hibernate.dialect}</prop> 
       <prop key="hibernate.show_sql">${hibernate.show_sql}</prop> 
       <prop key="hibernate.temp.use_jdbc_metadata_defaults">false</prop> 
       <prop key="hibernate.generate_statistics">${hibernate.generate_statistics}</prop> 
       <prop key="hibernate.format_sql">true</prop> 

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

问题处于休眠5我没有EventListners也没有IdTransferringMergeEventListener。我需要这个吗?我该如何更换?

回答

0

通过api IdTransferringMergeEventListener

扩展Hibernate的DefaultMergeEventListener的,新保存的对象的 IDS传送到对应的原始对象( 是传递到合并方法分离的对象图的一部分)。

所以,如果你不在项目中使用它,你可以跳过它。如果你需要它,你可以复制监听器并注册一个。我认为DefaultMergeEventListener的方法onMerge(MergeEvent event, Map copiedAlready)支持旧的IdTransferringMergeEventListener

IdTransferringMergeEventListener extends org.hibernate.event.def.DefaultMergeEventListener, which has been moved to org.hibernate.event.internal.DefaultMergeEventListener它应该没问题。

我们故意保留Spring的Hibernate 4支持,而不是最小的,在 为了保持接近原生Hibernate 4的做事方式。作为 因此,我们没有计划重新引入 IdTransferringMergeEventListener或任何我们以前的LOB用户类型, 全部为特殊用途类来解决问题,那 休眠真的应该自己解决 - 因为他们什么都没有做 与春天一起,并在春天的 方面造成反复的维护头痛。

你自由了基于Spring的老 IdTransferringMergeEventListener创建,当然你自己的版本。但是请注意,在Hibernate 4中,可以注册事件侦听器的 方式已更改: 这不可能在每个SessionFactory级别上进行,因此 Spring在其LocalSessionFactoryBean中也不支持。有关详细信息,请查阅 对应的Hibernate文档以及有关 Hibernate JIRA的相应报告。

+0

这个事件监听器用于什么?也许我正在使用,但我不知道 – Maratona

+0

它将使用hibernt merge()方法创建的对象的标识符复制回原始对象。例如,当第一次使用merge(object)保存对象并且发起它时你调用getId()的结果为null,监听器id被合并到保存的对象中,并且你得到了真实的id。 – xyz

+0

所以是的,我正在使用...你可以指导我如何实现这个行为吗? – Maratona