创建列表查询时java.lang.StackOverflower错误

创建列表查询时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

我想在一个查询中比较两个日期-我得到以下错误

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)

这是我的密码

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错误。