2015-07-31 3 views
-3

Я хочу, чтобы сравнить две даты в запросе - я получаю следующую ошибкуjava.lang.StackOverflowError при создании списка запросов

EJB Exception:: java.lang.StackOverflowError в org.eclipse.persistence .internal.jpa.EntityManagerImpl.createQuery (EntityManagerImpl.java:1603) at org.eclipse.persistence.internal.jpa.EntityManagerImpl.createQuery (EntityManagerImpl.java:1625) at sun.reflect.GeneratedMethodAccessor523.invoke (Неизвестный источник) at 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 (Unknown Source) на model.Services.SessionEJBDossierBean.getDossierFindAllParDepartementDBTECHandUrgen (SessionEJBDossierBean.java:67) в model.Services.SessionEJBDossierBean.getDossierFindAllParDepartementDBTECHandUrgen (SessionEJBDossierBean.java:73) в модели. Services.SessionEJBDossierBean.getDossierFindAllParDepartementDBTECHandUrgen (SessionEJBDossierBean.java:73) на модели .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(); 
} 
+1

Вы вызываете функцию 'getDossierFindAllParDepartementDBTECHandUrgen() 'сам по себе (то есть рекурсивно), без возможности остановить это (без условия завершения), следовательно, StackOverflowError. – Gosu

ответ

2

Вы возвращаетесь:

getDossierFindAllParDepartementDBTECHandUrgen() 

так бесконечная рекурсия происходит.

ваш метод вызывается метод, который называют методом ...

1

Очевидно, что нет базового варианта для метода, чтобы выйти, попробовать этот

public List<Dossier> getDossierFindAllParDepartementDBTECHandUrgen() { 

    ... 
    return query.getResultList(); 
} 
Смежные вопросы