创建列表查询时java.lang.StackOverflower错误
我想在一个查询中比较两个日期-我得到以下错误 EJB异常::java.lang.StackOverflower错误 位于org.eclipse.persistence.internal.jpa.EntityManagerImpl.createQuery(EntityManagerImpl.java:1603) 位于org.eclipse.persistence.internal.jpa.EntityManagerImpl.createQuery(EntityManagerImpl.java:1625) 位于sun.reflect.GeneratedMethodAccessor523.invoke(未知源) 在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中 位于java.lang.reflect.Method.invoke(Method.java:606) 在weblogic.persistence.BasePersistenceContextProxyImpl.invoke(BasePersistenceContextProxyImpl.java:110) 在weblogic.persistence.TransactionalEntityManagerProxyImpl.invoke(TransactionalEntityManagerProxyImpl.java:79) 在weblogic.persistence.BasePersistenceContextProxyImpl.invoke(BasePersistenceContextProxyImpl.java:91)中 位于com.sun.proxy.$Proxy218.createQuery(未知源) 位于model.Services.SessionEJBDossierBean.getdossierfindallpardepartmentdbtechandurgen(SessionEJBDossierBean.java:67) 位于model.Services.SessionEJBDossierBean.getdossierfindallpardepartmentdbtechandurgen(SessionEJBDossierBean.java:73) 位于model.Services.SessionEJBDossierBean.getdossierfindallpardepartmentdbtechandurgen(SessionEJBDossierBean.java:73) 位于model.Services.SessionEJBDossierBean.getdossierfindallpardepartmentdbtechandurgen(SessionEJBDossierBean.java:73) 位于model.Services.SessionEJBDossierBean.getdossierfindallpardepartmentdbtechandurgen(SessionEJBDossierBean.java:73) 位于model.Services.SessionEJBDossierBean.getdossierfindallpardepartmentdbtechandurgen(SessionEJBDossierBean.java:73) model.Services.SessionEJBDossierBean.getdossierfindallpardepartmentdbtechandurgen(SessionEJBDossierBean.java:73) 位于model.Services.SessionEJBDossierBean.getdossierfindallpardepartmentdbtechandurgen(SessionEJBDossierBean.java:73) 位于model.Services.SessionEJBDossierBean.getdossierfindallpardepartmentdbtechandurgen(SessionEJBDossierBean.java:73) 位于model.Services.SessionEJBDossierBean.getdossierfindallpardepartmentdbtechandurgen(SessionEJBDossierBean.java:73) 位于model.Services.SessionEJBDossierBean.getdossierfindallpardepartmentdbtechandurgen(SessionEJBDossierBean.java:73) 这是我的密码创建列表查询时java.lang.StackOverflower错误,java,jakarta-ee,jpa,calendar,jpql,Java,Jakarta Ee,Jpa,Calendar,Jpql,我想在一个查询中比较两个日期-我得到以下错误 EJB异常::java.lang.StackOverflower错误 位于org.eclipse.persistence.internal.jpa.EntityManagerImpl.createQuery(EntityManagerImpl.java:1603) 位于org.eclipse.persistence.internal.jpa.EntityManagerImpl.createQuery(EntityManagerImpl.java:16
public List<Dossier> getDossierFindAllParDepartementDBTECHandUrgen() {
Calendar myFiveDaysAhead;
myFiveDaysAhead = Calendar.getInstance();
myFiveDaysAhead.add(Calendar.DATE, 5);
TypedQuery<Dossier> query;
query =
em.createQuery("SELECT d FROM Dossier d WHERE d.depid=1 AND d.typeDossier = :tpd AND " +
"d.dateCreation < :fiveDaysAhead", Dossier.class);
query.setParameter("tpd", "Urgent");
query.setParameter("fiveDaysAhead", myFiveDaysAhead, TemporalType.TIMESTAMP);
return getDossierFindAllParDepartementDBTECHandUrgen();
}
public List getdossierfindallpardepartmentdbtechandurgen(){
历法五味子;
myFiveDaysAhead=Calendar.getInstance();
myFiveDaysAhead.add(Calendar.DATE,5);
类型查询;
质疑=
em.createQuery(“从文件d中选择d,其中d.depid=1和d.typeDossier=:tpd和”+
“d.dateCreation<:fiveDaysAhead”,档案类);
query.setParameter(“tpd”、“紧急”);
setParameter(“fiveDaysAhead”,myFiveDaysAhead,TemporalType.TIMESTAMP);
返回getdossierfindallpardepartmentdbtechandurgen();
}
您返回:
getDossierFindAllParDepartementDBTECHandUrgen()
因此,出现了无限递归
您的方法调用该方法,该方法调用该方法…显然,该方法没有退出的基本情况,请尝试以下操作
public List<Dossier> getDossierFindAllParDepartementDBTECHandUrgen() {
...
return query.getResultList();
}
public List getdossierfindallpardepartmentdbtechandurgen(){
...
返回query.getResultList();
}
您正在调用函数本身的函数GetDossierFindallPardepartmentDBTechAndUrgen()
,无法停止该函数(没有终止条件),因此出现StackOverflower错误。