Hibernate无法同时获取多个行李和两个列表
我的处境很奇怪。以前,当我尝试通过HQL查询的一次尝试获取多个集合时,我没有出现此错误。互联网上说FetchType.LAZY可能会出现问题,但我删除了它,没有任何改变 我试图从中获取某些数据的实体:Hibernate无法同时获取多个行李和两个列表,hibernate,persistence,entity,hibernate-mapping,Hibernate,Persistence,Entity,Hibernate Mapping,我的处境很奇怪。以前,当我尝试通过HQL查询的一次尝试获取多个集合时,我没有出现此错误。互联网上说FetchType.LAZY可能会出现问题,但我删除了它,没有任何改变 我试图从中获取某些数据的实体: @Entity @Table(name="INSTITUTION_IN_FORM") public class InstitutionInForm implements Serializable { private static final long serialVersionUID
@Entity
@Table(name="INSTITUTION_IN_FORM")
public class InstitutionInForm implements Serializable {
private static final long serialVersionUID = -721358037476057890L;
private int institutionId;
@Id
@GeneratedValue(strategy= IDENTITY)
@Column(name="INSTITUTION_ID")
public int getInstitutionId() {
return institutionId;
}
public void setInstitutionId(int institutionId) {
this.institutionId = institutionId;
}
private int version;
@Version
@Column(name="VERSION")
public int getVersion() {
return version;
}
public void setVersion(int version) {
this.version = version;
}
private String nameOfInstitution;
@Column(name="INSTITUTION_NAME")
public String getNameOfInstitution() {
return nameOfInstitution;
}
public void setNameOfInstitution(String nameOfInstitution) {
this.nameOfInstitution = nameOfInstitution;
}
private List<FormDate> formDateList = new ArrayList<FormDate>();
@ManyToMany(mappedBy="institutions")
@Cascade(CascadeType.ALL)
public List<FormDate> getFormDateList() {
return formDateList;
}
public void setFormDateList(List<FormDate> formDateList) {
this.formDateList = formDateList;
}
private List<FormDescription> formDescriptionList = new ArrayList<FormDescription>();
@OneToMany(mappedBy="institutions", orphanRemoval=true)
@Cascade(CascadeType.ALL)
public List<FormDescription> getFormDescriptionList() {
return formDescriptionList;
}
public void setFormDescriptionList(List<FormDescription> formDescriptionList) {
this.formDescriptionList = formDescriptionList;
}
}
我用于在数据库中查找数据的dao方法:
@SuppressWarnings("unchecked")
@Override
public List<InstitutionInForm> fetchByName(String institutionName) {
return sessionFactory.getCurrentSession().createQuery("select distinct institution from InstitutionInForm institution " +
"left join fetch institution.formDateList formDate left join fetch institution.formDescriptionList formDescription where institution.nameOfInstitution= :institutionName")
.setParameter("institutionName", institutionName).list();
}
我的错误跟踪:
Exception in thread "main" org.hibernate.loader.MultipleBagFetchException: cannot simultaneously fetch multiple bags
at org.hibernate.loader.BasicLoader.postInstantiate(BasicLoader.java:93)
at org.hibernate.loader.hql.QueryLoader.<init>(QueryLoader.java:121)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:204)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:136)
at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:105)
at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:80)
at org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:168)
at org.hibernate.internal.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:221)
at org.hibernate.internal.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:199)
at org.hibernate.internal.SessionImpl.createQuery(SessionImpl.java:1778)
at edu.demidov.dao.EducationWebDaoImpl.fetchByName(EducationWebDaoImpl.java:67)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:96)
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:260)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:94)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
at $Proxy24.fetchByName(Unknown Source)
at edu.demidov.dao.AppOut.main(AppOut.java:52)
可能有什么问题。任何帮助都将不胜感激。谢谢各位。粘贴您收到的错误的堆栈跟踪。这是对您的问题的一个很好的回答:谢谢各位,这解决了我的问题