簡體   English   中英

創建列表查詢時出現java.lang.StackOverflowError

[英]java.lang.StackOverflowError when creating a list query

我想比較查詢中的兩個日期 - 我收到以下錯誤

EJB 異常::org.eclipse.persistence.internal.jpa.EntityManagerImpl.createQuery(EntityManagerImpl.java:1603) 處的 java.lang.StackOverflowError 在 org.eclipse.persistence.internal.jpa.EntityManagerImpl.createQuery(EntityManagerImpl.java:1625) ) at sun.reflect.GeneratedMethodAccessor523.invoke(Unknown Source) 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(BasePersistenceContext9ProxyImpl.java:110) at weblogic.persistence.TransactionalEntityManagerProxyImpl.invoke(TransactionalEntityManagerProxyImpl.java:79) createQuery(Unknown Source) at model.Services.SessionEJBDossierBean.getDossierFindAllParDepartementDBTECHandUrgen(SessionEJBDossierBean.java:67) at model.Services.SessionEJBDossierBean.getDossierFindAll ParDepartementDBTECHandUrgen(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)在模型。 Services.SessionEJBDossierBean.getDossierFindAllParDepartementDBTECHandUrgen(SessionEJBDossierBean.java:73) at model.Services.SessionEJBDossierBean.getDossierFindAllParDepartementDBTECHandUrgen(SessionEJBDossierBean.java:73) at mode l.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();
}

你返回:

 getDossierFindAllParDepartementDBTECHandUrgen()

所以發生了無限遞歸。

你的方法調用方法,調用方法...

顯然沒有退出方法的基本情況,試試這個

public List<Dossier> getDossierFindAllParDepartementDBTECHandUrgen() {

    ...
    return query.getResultList();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM