gpt4 book ai didi

java - 如何获取@OneToMany 和@ManyToMany 实体

转载 作者:搜寻专家 更新时间:2023-10-31 20:06:26 25 4
gpt4 key购买 nike

我的问题与以下内容密切相关:
Why am I getting a Hibernate LazyInitializationException in this Spring MVC web application when the data displays correctly?

我在特定实体上具有以下属性:

@OneToMany(fetch = FetchType.EAGER, cascade = {CascadeType.REMOVE})
@JoinColumn(referencedColumnName = "id", name = "ID_FORMAT_FILE")
private List<ColumnFormat> columnList;
@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(name = "FILEFORMAT_ORIGINATOR", joinColumns = @JoinColumn(name = "FILEFORMAT_ID", referencedColumnName = "id")
, inverseJoinColumns = @JoinColumn(name = "ORIGINATOR_ID", referencedColumnName = "id"))
private List<Originator> originators;

正如您可能已经注意到的,我在两个关系上都有一个 Eager Fetch 类型,但它给出了以下内容:

Caused by: org.hibernate.loader.MultipleBagFetchException: cannot simultaneously fetch multiple bags
at org.hibernate.loader.BasicLoader.postInstantiate(BasicLoader.java:94)
at org.hibernate.loader.entity.EntityLoader.<init>(EntityLoader.java:119)
at org.hibernate.loader.entity.EntityLoader.<init>(EntityLoader.java:71)
at org.hibernate.loader.entity.EntityLoader.<init>(EntityLoader.java:54)
at org.hibernate.loader.entity.BatchingEntityLoader.createBatchingEntityLoader(BatchingEntityLoader.java:133)
at org.hibernate.persister.entity.AbstractEntityPersister.createEntityLoader(AbstractEntityPersister.java:1914)
at org.hibernate.persister.entity.AbstractEntityPersister.createEntityLoader(AbstractEntityPersister.java:1937)
at org.hibernate.persister.entity.AbstractEntityPersister.createLoaders(AbstractEntityPersister.java:3205)
at org.hibernate.persister.entity.AbstractEntityPersister.postInstantiate(AbstractEntityPersister.java:3191)
at org.hibernate.persister.entity.SingleTableEntityPersister.postInstantiate(SingleTableEntityPersister.java:728)
at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:348)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1845)
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:902)
... 33 more

我必须访问两个列表 List<ColumnFormat> columnListList<Originator> originators在不同的 bean 上,但如果两者都是 Fetch Type Eager 我会遇到上述问题,如果其中一个是 Lazy 我会得到以下问题:

Caused by: org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: xxx.xxx.xxx.xxx.FileFormat.originators, no session or session was closed
at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:383)
at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationExceptionIfNotConnected(AbstractPersistentCollection.java:375)
at org.hibernate.collection.AbstractPersistentCollection.readElementExistence(AbstractPersistentCollection.java:157)
at org.hibernate.collection.PersistentBag.contains(PersistentBag.java:262)
at java.util.ArrayList.batchRemove(ArrayList.java:632)
at java.util.ArrayList.removeAll(ArrayList.java:605)
at xxx.xxx.xxx.xxx.bean.FileFormatEdit.init(FileFormatEdit.java:1040)
... 75 more

有没有办法在不出现这些问题的情况下检索不同 bean 上的列表?

最佳答案

以前没有遇到过这个问题,但只是谷歌搜索“无法同时获取多个包”返回this link在 Hibernate 论坛上。

blog posts 之一该链接中可能包含您正在寻找的解决方案。

关于java - 如何获取@OneToMany 和@ManyToMany 实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5507077/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com