Hibernate 4.3到5.2升级 - 无法同时获取多个行李

时间:2017-03-27 11:12:28

标签: spring hibernate

尝试从 4.3.11 升级到hibernate 5.2.9 。目前使用的是hibernate native api。在pom.xml中添加依赖项后,运行单元测试时出现以下错误:

  

通过字段' sessionFactory'表达的不满意的依赖性;嵌套异常是org.springframework.beans.factory.BeanCreationException:创建名称为' sessionFactory'的bean时出错在类路径资源[testApplicationContext.xml]中定义:init方法的调用失败;嵌套异常是org.hibernate.loader.MultipleBagFetchException:无法同时获取多个包

我有一个 testApplicationContext.xml ,其中包含以下内容:

<bean id="sessionFactory"
    class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
    <property name="dataSource" ref="dataSource"/>
    <property name="packagesToScan" value="org.xxxx.xxxx.xxxx.model"/>
    <property name="hibernateProperties">
        <props>
            <prop key="hibernate.dialect">${hibernate.dialect}</prop>
            <prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
            <prop key="hibernate.format_sql">true</prop>
            <prop key="hibernate.use_sql_comments">true</prop>
            <prop key="hibernate.hbm2ddl.auto">update</prop>
        </props>
    </property>
</bean>

<bean id="transactionManager"
    class="org.springframework.orm.hibernate5.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactory" />
</bean>

<tx:annotation-driven transaction-manager="transactionManager" />

我将sessionFactory和transactionManager从hibernate4更新为hibernate5。

的pom.xml

<dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>5.2.9.Final</version>
    </dependency>

据我所知,错误消息暗示加载多个急切加载的集合时出现问题。但是,我从this了解到,使用特定于hibernate的注释和更新版本的hibernate支持这个用例。

有人可以帮忙吗?谢谢

1 个答案:

答案 0 :(得分:7)

此问题现已解决。

在我的几个实体中,我使用List作为@OneToMany

更改为Set会导致错误消失。尚不确定为什么这个工作/在Hibernate 4.3.11而不是5.2.9中得到支持。如果我找到任何进一步的信息,我会更新这个答案。

有关List vs Set的更多信息,请herehere