I was rather surprised to see this exception:
| Caused by: org.hibernate.HibernateException: cannot simultaneously fetch multiple bags | at org.hibernate.loader.BasicLoader.postInstantiate(BasicLoader.java:66) | at org.hibernate.loader.hql.QueryLoader.<init>(QueryLoader.java:100) | at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:180) | at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:110) | at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:77) | at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:56) | at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:71) | at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:133) | at org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:112) | at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1612) | at org.hibernate.ejb.AbstractEntityManagerImpl.createQuery(AbstractEntityManagerImpl.java:76) | ... 70 more | I have an entity called Order which has two lazy collections: | @Entity | @Table(name="tbl_order") | public class Order implements Serializable | { | private List<Address> addresses; | private List<OrderLine> orderItems; | private List<TrackingNumber> trackingNumbers; | | public Order() | { | } | | @OneToMany(mappedBy="order", fetch=FetchType.LAZY, cascade=CascadeType.ALL) | public List<Address> getAddresses() | { | return this.addresses; | } | | public void setAddresses(List<Address> addresses) | { | this.addresses = addresses; | } | | @OneToMany(mappedBy="order", fetch=FetchType.LAZY, cascade=CascadeType.ALL) | public List<OrderLine> getOrderItems() | { | return this.orderItems; | } | | public void setOrderItems(List<OrderLine> orderItems) | { | this.orderItems = orderItems; | } | | @OneToMany(mappedBy="order", fetch=FetchType.LAZY, cascade=CascadeType.ALL) | public List<TrackingNumber> getTrackingNumbers() | { | return this.trackingNumbers; | } | | public void setTrackingNumbers(List<TrackingNumber> trackingNumbers) | { | this.trackingNumbers = trackingNumbers; | } | } | The EJB-QL that caused the problem is: | .......... | String query = "select o from Order o " + | "left join fetch o.addresses a " + | "left join fetch o.orderItems ol " + | "where o.id = :orderId"; | | Query q = this.em.createQuery(query); | q.setParameter("orderId", orderId); | .......... | Why can't I "left join fetch" preload more than one of these collections at the same time? I was originally eagerly-loading the addresses but I decided that this was bad due to how my application uses this data...it would deteriorate performance at a level I'm not happy with. Is this a bug or a limitation? Thanks! View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3949739#3949739 Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3949739 _______________________________________________ JBoss-user mailing list JBoss-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/jboss-user