hibernate 5上的事件监听器

时间:2017-07-16 16:29:42

标签: java hibernate

我将我的hibernate从版本3更新为5,并且在我的应用程序上下文中我有以下bean

<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。我需要这个吗?我怎样才能更换?

1 个答案:

答案 0 :(得分:0)

来自api IdTransferringMergeEventListener

  

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

因此,如果您未在项目中使用此功能,则可以跳过它。如果需要,可以复制监听器并注册一个。我认为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用户类型,   所有这些都是专门用于解决问题的课程   Hibernate应该真正解决自己 - 因为它们无关   与Spring一起在Spring上引起反复的维护问题   侧。

     

您可以根据Spring的版本自由创建自己的版本   当然,IdTransferringMergeEventListener 。不过,请注意   Hibernate 4中可以注册事件监听器的方式已经改变:   因此,在每个SessionFactory级别上这是不可能的   Spring也无法在其LocalSessionFactoryBean中支持。检查   相应的Hibernate文档和相应的报告   Hibernate JIRA了解详情。