2017-11-09 2 views
0

Ich habe eine Abfrage wie:inkonsistent Illegal

@Query("select I from Indicator I where I.bankId in (:bankIds) ") 
public List<Indicator> getIndicatorDetailsByBankIdList(@Param("bankIds") Set<Long> bankIdList); 

Diese feine die meiste Zeit arbeitet. Manchmal gibt es die folgende Ausnahme.

Description - Parameter with that name [bankIds] did not exist; nested exception is java.lang.IllegalArgumentException: Parameter with that name [bankIds] did not exist, StackTrace - java.lang.IllegalArgumentException: Parameter with that name [bankIds] did not exist 
    at org.hibernate.jpa.spi.BaseQueryImpl.findParameterRegistration(BaseQueryImpl.java:505) 
    at org.hibernate.jpa.spi.BaseQueryImpl.setParameter(BaseQueryImpl.java:631) 
    at org.hibernate.jpa.spi.AbstractQueryImpl.setParameter(AbstractQueryImpl.java:180) 
    at org.hibernate.jpa.spi.AbstractQueryImpl.setParameter(AbstractQueryImpl.java:49) 

Beobachtungen

  1. Ich bin nicht sicher, wie recht ich in dieser Beobachtung Zugabe bin, aber ich denke, der Dienst nur, wenn schwere Innenmodule, die wenig sind auf den Daten verwendet versagt Seite (auch hier scheitert es nur zeitweise). Führen Speicherprobleme dazu, dass diese Art von Ausnahmen ausgelöst wird?

  2. Inconsistant Problem auf eine andere Methode auf der gleichen Einheit beobachtet wurde:

@Query("select I from Indicator I where I.activityId in (:activityIds) ") 
 
    \t public List<Indicator> getIndicatorDetailsByActivityIdList(@Param("activityIds") Set<Long> acyIdList);

+0

Welchen Fehler haben Sie, wenn 'bankIdList' leer oder' null' ist? – pirho

+0

JPA ermöglicht es, empty set oder sogar null als Argument zu akzeptieren. Lassen Sie uns jedoch die bankIdsList protokollieren, bevor Sie das Repository aufrufen, um die Ursache zu finden. –

+0

@AndriySlobodyanyk Ok, ich frage mich nur, was "(: bankIds)" zugewiesen wird, also wie sieht die Abfrage dann insgesamt aus? Nicht so vertraut mit JPQL/HQL selbst, aber mit CriteriaQuery. – pirho

Antwort

0

Bitte benutzen Sie das folgende Format der Abfrage

@Query("select I from Indicator I where I.bankId in :bankIds ") 

Bitte beachten Sie die Link

+0

Wie es aussieht, ist dies nicht wirklich eine Antwort, obwohl es eine werden könnte, wenn Sie erklären, wie das falsche Format das Verhalten erstellt. –