Hibernate fetch join -> не может получить несколько пакетов

Проблема в том, что у меня есть два пакета в моем объекте, которые я хотел бы отобразить в моем интерфейсе jsf (пружина сзади, поэтому нет ленивой загрузки). Поэтому мне нужно с нетерпением получить их, чтобы отобразить информацию в виде такого списка:

  • Точка 1 (Метка 1, Метка 2) (Тэг1 ... Тэг n)
  • Точка 2 (Метка 3, Метка 4) ( Tag1 ... Tag n)

Не удалось перевести оба списка в режим ожидания. Итак, я попытал счастья с присоединением к выборке. Это позволило мне получить один список, но когда я добавил второй список, я получил известную ошибку «не могу получить несколько пакетов».

Может ли Hibernate обрабатывать два объединения выборки в запросе?

public class PointOfInterest
 @OneToMany(mappedBy="poi")
private List<PointOfInterestLabel> labels = new ArrayList<PointOfInterestLabel>();

@ManyToMany
private List<Tag> tags = new ArrayList<Tag>();

Мое объединение выборки:

SELECT DISTINCT p from PointOfInterest p 
        left join fetch p.labels 
        left join fetch p.tags WHERE p.figure = :figure

При запуске создание моей фабрики гибернации завершается ошибкой:

Caused by: org.hibernate.loader.MultipleBagFetchException: cannot simultaneously fetch multiple bags
    at org.hibernate.loader.BasicLoader.postInstantiate(BasicLoader.java:94)
    at org.hibernate.loader.hql.QueryLoader.<init>(QueryLoader.java:123)
    at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:206)
    at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:136)
    at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:101)
    at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:80)
    at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:98)
    at org.hibernate.impl.SessionFactoryImpl.checkNamedQueries(SessionFactoryImpl.java:557)
    at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:422)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1385)
    at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:954)
    at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:883)
    ... 55 more
6
задан Johny T Koshy 2 December 2012 в 17:39
поделиться