创建列表查询时的java.lang.StackOverflowError

时间:2015-07-31 12:16:24

标签: java java-ee jpa calendar jpql

我想比较查询中的两个日期 - 我收到以下错误

  

EJB异常:: java.lang.StackOverflowError        在org.eclipse.persistence.internal.jpa.EntityManagerImpl.createQuery(EntityManagerImpl.java:1603)        在org.eclipse.persistence.internal.jpa.EntityManagerImpl.createQuery(EntityManagerImpl.java:1625)        at sun.reflect.GeneratedMethodAccessor523.invoke(未知来源)        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)        at java.lang.reflect.Method.invoke(Method.java:606)        at weblogic.persistence.BasePersistenceContextProxyImpl.invoke(BasePersistenceContextProxyImpl.java:110)        at weblogic.persistence.TransactionalEntityManagerProxyImpl.invoke(TransactionalEntityManagerProxyImpl.java:79)        at weblogic.persistence.BasePersistenceContextProxyImpl.invoke(BasePersistenceContextProxyImpl.java:91)        在com.sun.proxy。$ Proxy218.createQuery(未知来源)        在model.Services.SessionEJBDossierBean.getDossierFindAllParDepartementDBTECHandUrgen(SessionEJBDossierBean.java:67)        在model.Services.SessionEJBDossierBean.getDossierFindAllParDepartementDBTECHandUrgen(SessionEJBDossierBean.java:73)        在model.Services.SessionEJBDossierBean.getDossierFindAllParDepartementDBTECHandUrgen(SessionEJBDossierBean.java:73)        在model.Services.SessionEJBDossierBean.getDossierFindAllParDepartementDBTECHandUrgen(SessionEJBDossierBean.java:73)        在model.Services.SessionEJBDossierBean.getDossierFindAllParDepartementDBTECHandUrgen(SessionEJBDossierBean.java:73)        在model.Services.SessionEJBDossierBean.getDossierFindAllParDepartementDBTECHandUrgen(SessionEJBDossierBean.java:73)   model.Services.SessionEJBDossierBean.getDossierFindAllParDepartementDBTECHandUrgen(SessionEJBDossierBean.java:73)        在model.Services.SessionEJBDossierBean.getDossierFindAllParDepartementDBTECHandUrgen(SessionEJBDossierBean.java:73)        在model.Services.SessionEJBDossierBean.getDossierFindAllParDepartementDBTECHandUrgen(SessionEJBDossierBean.java:73)        在model.Services.SessionEJBDossierBean.getDossierFindAllParDepartementDBTECHandUrgen(SessionEJBDossierBean.java:73)        在model.Services.SessionEJBDossierBean.getDossierFindAllParDepartementDBTECHandUrgen(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();
}

2 个答案:

答案 0 :(得分:2)

你回来了:

 getDossierFindAllParDepartementDBTECHandUrgen()

因此发生了无限递归。

你的方法调用方法,调用方法...

答案 1 :(得分:1)

显然退出方法没有基本情况,试试这个

public List<Dossier> getDossierFindAllParDepartementDBTECHandUrgen() {

    ...
    return query.getResultList();
}