Как получить @OneToMany и @ManyToMany Entities

моя проблема очень связана со следующим:
Почему я получаю исключение Hibernate LazyInitializationException в этом веб-приложении Spring MVC, когда данные отображаются правильно?

У меня есть следующие свойства на конкретный объект:

@OneToMany(fetch = FetchType.EAGER, cascade = {CascadeType.REMOVE})
@JoinColumn(referencedColumnName = "id", name = "ID_FORMAT_FILE")
private List 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 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.(EntityLoader.java:119)
    at org.hibernate.loader.entity.EntityLoader.(EntityLoader.java:71)
    at org.hibernate.loader.entity.EntityLoader.(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.(SessionFactoryImpl.java:348)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1845)
    at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:902)
    ... 33 more  

Я должен получить доступ к обоим спискам List columnList и Перечислите создателей на разных 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-компонентов без этих проблем?

5
задан Community 23 May 2017 в 12:09
поделиться