java - 不能同时在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean 获取多个包

标签 java mysql spring hibernate fetch

当我尝试从数据库中获取数据时出现异常。

我有三个具有 ManyToOne 关系的实体。一个 A -> 许多 B,一个 A -> C 和一个 B -> 许多 D。我使用 EAGER'Type。但我得到异常(exception)。见下文。

第一个实体:

@Entity
@Table
public class A {

    @Id
    @Column(columnDefinition = "VARCHAR(50)", nullable = false)
    private String aId;

    @OneToMany(mappedBy = "a", targetEntity = B.class, fetch = FetchType.EAGER, cascade = CascadeType.ALL)
    private List<B> b;

    @OneToMany(mappedBy = "a", targetEntity = C.class, cascade = CascadeType.ALL)
    private List<C> c;

第二个:

@Entity
@Table
public class B {

    @Id
    @Column(columnDefinition = "VARCHAR(50)", nullable = false)
    private String bId;

    @ManyToOne(targetEntity = A.class, cascade = CascadeType.ALL)
    @JoinColumn(name = "aId", referencedColumnName = "aId")
    private A a;

    @OneToMany(mappedBy = "b", targetEntity = D.class, fetch = FetchType.EAGER, cascade = CascadeType.ALL)
    private List<D> d;

最后一个:

@Entity
@Table
public class D {

    @Id
    @Column(columnDefinition = "VARCHAR(50)", nullable = false)
    private String dId;

    @ManyToOne(targetEntity = B.class, cascade = CascadeType.ALL)
    @JoinColumn(name = "bId", referencedColumnName = "bId",)
    private B b;

当我运行查询时,我得到了这个执行:

Invocation of init method failed; nested exception is org.hibernate.loader.MultipleBagFetchException: cannot simultaneously fetch multiple bags
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1566)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:303)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:299)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
    at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:956)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:747)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:480)
    at org.springframework.context.annotation.AnnotationConfigApplicationContext.<init>(AnnotationConfigApplicationContext.java:84)
    at de.emo.cit.tuberlin.GetController.getUDDISLA(GetController.java:44)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:483)

当我将 fetch'type 更改为 LAZY 时,我得到了这个 execption:

Caused by: org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: B.d, could not initialize proxy - 无 session

有什么想法吗? 谢谢;-)

最佳答案

使用@LazyCollection(LazyCollectionOption.FALSE)应该可以解决您的问题,请引用Hibernate cannot simultaneously fetch multiple bags了解更多详情

关于java - 不能同时在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean 获取多个包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29289584/

相关文章:

java - 绘制和表示带有阵列墙的迷宫

java - 使用 Java 中的 Xerces 针对 XSD 1.1 进行 XML 验证

C# - MySQL - 如果状态为 'a',则从列获取值

mysql - 运行两个 mysql 实例

java - 使用Groovy/Grails工具套件无法在grails项目中打开文件

java - Android 中的 XML 架构验证 - 获取 "java.lang.ExceptionInInitializerError"

java - 在 java 中使用正则表达式的更简洁的解决方案

mysql - 汇总值,即使它们不存在于第二个表中

java - Spring - 多个方面乱序触发

Spring Boot Kafka Streams - 绑定(bind)问题