当前位置: 首页 > 知识库问答 >
问题:

原因:org。冬眠加载器。MultipleBagFetchException:无法同时提取多个行李

邹书
2023-03-14

我需要配置SpringJPA(EntityManager)Hibernate
如果我必须fetch=FetchType。如果必须fetch=FetchType,则延迟运行服务器成功
。急切运行服务器错误:
I使用tomcat 7
由:org引起。springframework。豆。工厂BeanCreationException:创建名为“entityManagerFactory”的bean时出错,该bean在ServletContext资源[/WEB-INF/applicationContext.xml]中定义:调用init方法失败;嵌套的异常是javax。坚持不懈PersistenceException:[PersistenceUnit:fmis2]无法生成EntityManagerFactory

原因:javax。坚持不懈PersistenceException:[PersistenceUnit:fmis2]无法生成EntityManagerFactory

原因:组织。冬眠加载器。MultipleBagFetchException:无法同时提取多个行李

请帮帮我。我错在哪里。谢谢

配置应用程序上下文。xml

<context:annotation-config />
<context:component-scan base-package="com.evnit.fmis" />
<jpa:repositories base-package="com.evnit.fmis" />
<!-- START -->
<bean id="entityManagerFactory"
    class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="persistenceXmlLocation" value="classpath:META-INF/jpa-persistence.xml" />
    <property name="persistenceUnitName" value="fmis2" />
    <property name="dataSource" ref="fmis2dataSource" />
    <property name="jpaVendorAdapter">
        <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
            <property name="showSql" value="false" />
            <property name="databasePlatform" value="org.hibernate.dialect.SQLServerDialect" />
            <property name="database" value="SQL_SERVER" />
        </bean>
    </property>
    <property name="loadTimeWeaver">
        <bean
            class="org.springframework.instrument.classloading.InstrumentationLoadTimeWeaver" />
    </property>

</bean>

<bean id="fmis2dataSource" class="org.apache.commons.dbcp.BasicDataSource"
    destroy-method="close">
    <property name="driverClassName" value="${jdbc.driverClassName}" />
    <property name="url" value="${jdbc.url}" />
    <property name="username" value="${jdbc.username}" />
    <property name="password" value="${jdbc.password}" />
</bean>
<bean id="txManager" class="org.springframework.orm.jpa.JpaTransactionManager">
    <property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
<tx:annotation-driven transaction-manager="txManager" />

jpa持久性。xml

<persistence-unit name="fmis2" transaction-type="RESOURCE_LOCAL">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <jar-file>/WEB-INF/lib/accounting-inf-1.0-SNAPSHOT.jar</jar-file>
        <jar-file>/WEB-INF/lib/masterdata-inf-1.0-SNAPSHOT.jar</jar-file>
        <jar-file>/WEB-INF/lib/congno-backend-1.0-SNAPSHOT.jar</jar-file>
        <jar-file>/WEB-INF/lib/congcudungcu-backend-1.0-SNAPSHOT.jar</jar-file>
        <jar-file>/WEB-INF/lib/taisan-backend-1.0-SNAPSHOT.jar</jar-file>
        <jar-file>/WEB-INF/lib/vattu-backend-1.0-SNAPSHOT.jar</jar-file>
        <jar-file>/WEB-INF/lib/muahang-backend-1.0-SNAPSHOT.jar</jar-file>
</persistence-unit>

Java代码实体

package com.evnit.fmis.accounting.entity;

@Entity
@Table(name = "ChungTu", schema = "ketoan")
public class ChungTu implements java.io.Serializable {

    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER, mappedBy = "chungTu")
    public List<DinhKhoan> getDinhKhoans() {
        return this.dinhKhoans;
    }

    public void setDinhKhoans(List<DinhKhoan> dinhKhoans) {
        this.dinhKhoans = dinhKhoans;
    }

    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER, mappedBy = "chungTu")
    public List<Uynhiemchi> getUynhiemchis() {
        return this.uynhiemchis;
    }

    public void setUynhiemchis(List<Uynhiemchi> uynhiemchis) {
        this.uynhiemchis = uynhiemchis;
    }
}
@Entity
@Table(name = "DinhKhoan", schema = "ketoan")
public class DinhKhoan implements java.io.Serializable {

    private static final long serialVersionUID = 1L;

    private ChungTu chungTu;

    @ManyToOne(fetch = FetchType.EAGER)
    @JoinColumn(name = "IdChungtu")
    public ChungTu getChungTu() {
        return this.chungTu;
    }

    public void setChungTu(ChungTu chungTu) {
        this.chungTu = chungTu;
    }

    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER, mappedBy = "dinhKhoan")
    public List<HoaDonVat> getHoaDonVats() {
        return this.hoaDonVats;
    }

    public void setHoaDonVats(List<HoaDonVat> hoaDonVats) {
        this.hoaDonVats = hoaDonVats;
    }

}
@Entity
@Table(name = "Uynhiemchi", schema = "ketoan")
public class Uynhiemchi implements java.io.Serializable {

    private ChungTu chungTu;

    @ManyToOne(fetch = FetchType.EAGER)
    @JoinColumn(name = "IdChungtu", nullable = true)
    public ChungTu getChungTu() {
        return this.chungTu;
    }

    public void setChungTu(ChungTu chungTu) {
        this.chungTu = chungTu;
    }

}

@Entity
@Table(name = "HoaDonVAT", schema = "ketoan")
public class HoaDonVat implements java.io.Serializable {

    private DinhKhoan dinhKhoan;

    @ManyToOne(fetch = FetchType.EAGER)
    @JoinColumn(name = "IdDinhKhoan")
    public DinhKhoan getDinhKhoan() {
        return this.dinhKhoan;
    }

    public void setDinhKhoan(DinhKhoan dinhKhoan) {
        this.dinhKhoan = dinhKhoan;
    }
}

Java代码Dao

 public abstract class CommonDao {

        @PersistenceContext(unitName = "fmis2")
        protected EntityManager entityManager;
    }

共有1个答案

田易安
2023-03-14

问题在于Hibernate规范:他不允许超过一个用EAGER标记的列表。有一些选项可以绕过此问题:

  • 使用惰性列表。如果你需要“模拟”一个渴望的关系,使用你的列表。要在查询之前填充的size()

其他解释:Hibernate不能同时获取多个包

使用JPA在Hibernate中使用EAGER类型进行多次读取

问候。

 类似资料:
  • 我有以下实体 注册程序 教练 官方 基本上,我有与(Trainer-Register steredProgram,官方注册程序)有多对一关系的实体。现在我有一个服务已经满足了我的要求,通过id获取注册程序,我应该只包含所有的和与isDeletedfalse。请参阅下面的服务: 服务 现在,我尝试使用< code>@Query和< code>@EntityGraph,这样我就可以只使用一个查询就获得

  • 问题内容: Hibernate在创建SessionFactory时抛出此异常: org.hibernate.loader.MultipleBagFetchException:无法同时获取多个包 这是我的测试用例: Parent.java Child.java 这个问题怎么样?我能做什么? 编辑 好的,我的问题是另一个“父”实体在我的父内部,我的真实行为是这样的: Parent.java Anoth

  • 问题内容: 在创建时抛出此异常: 无法同时获取多个包 这是我的测试用例: Parent.java 这个问题怎么样?我能做什么? 编辑 好的,我的问题是另一个“父”实体在我的父内部,我的真实行为是这样的: Parent.java AnotherParent.java Hibernate不喜欢带有的两个集合FetchType.EAGER,但这似乎是一个错误,我没有做不寻常的事情… FetchType.

  • 我得到这个错误的原因很奇怪。我将解释这个错误是按时间顺序排列的,以便更容易理解。 这是我的JPA查询,在我添加po之前,它一直工作得很好。it的customer\u id。 商店订单构造器 错误: 我很困惑为什么我调用的表中的一列不被识别。我已经玩了一段时间了,但感觉就像在追我的尾巴。 -------更新------- 我注意到表中的其他BigInt变量在构造函数中很长。因此,我将customer

  • 我的存储库中有nativeQuery查询。 但是当我运行这个页面时,我有一个错误 无法提取结果集;SQL[n/a];嵌套的异常是org。冬眠例外SQLGrammarException:无法提取结果集 产业 能找个人帮我吗。或者如何将这个nativeQuery转换为Hibernate sql?谢谢

  • 我需要你帮我把冬眠映射成一对多我不知道为什么这是错的 另一类: 映射 另一个映射: Hibernate配置 这就是错误: 如果有人能帮我,我非常感激,谢谢!