Wie wird ein dynamischer Parameter in einer IN-Klausel einer JPA-Namensabfrage verwendet?

8

mein Problem ist über diese Art von Abfrage:

%Vor%

Der vorherige Code funktioniert in Sql Developer einwandfrei. Die gleiche statische Abfrage funktioniert auch gut und gibt mir ein paar Ergebnisse zurück;

%Vor%

Aber wenn ich versuche, dies zu parametrisieren, stoße ich auf ein Problem.

%Vor%

Ich habe kein Ergebnis (aber keinen Fehler in der Konsole). Und wenn ich auf das Protokoll schaue, sehe ich so etwas:

%Vor%

Ich habe auch versucht, keine Anführungszeichen (mit ähnlichem Ergebnis) oder nicht geordneten Parameter (: selectedValues) zu verwenden, was zu einem solchen Fehler führt:

%Vor%

Ich habe versucht, die Klammern direkt im Parameter anstelle der Abfrage zu setzen, aber das hat auch nicht funktioniert ...

Ich könnte meine Abfrage zur Laufzeit erstellen, um mit dem ersten (Arbeits) Fall übereinzustimmen, aber ich würde es lieber auf die richtige Weise machen; Wenn also jemand eine Idee hat, lese ich sie mit großem Interesse!

Zu Ihrer Information: JPA Version 1.0 Oracle 11G

    
Marvin 31.01.2014, 15:49
quelle

4 Antworten

23

JPA unterstützt die Verwendung einer Auflistung als Listenliteralparameter nur in JPQL-Abfragen, nicht in systemeigenen Abfragen. Einige JPA-Anbieter unterstützen es als eine proprietäre Funktion, aber es ist nicht Teil der JPA-Spezifikation (siehe Ссылка ).

>

Benannte Parameter in systemeigenen Abfragen sind ebenfalls nicht Teil der JPA-Spezifikation. Ihr Verhalten hängt vom Persistenzanbieter und / oder dem JDBC-Treiber ab.

Hibernate mit dem JDBC-Treiber für Oracle unterstützt diese beiden Funktionen.

%Vor%     
Marc-André 01.02.2014, 05:01
quelle
1

Ersetzen Sie dies:

%Vor%

mit

%Vor%     
Sabuj Hassan 31.01.2014 15:55
quelle
1

Anstelle von:

%Vor%

Ich musste verwenden:

%Vor%     
Brian 03.02.2017 21:22
quelle
0

Das hat bei mir im Derby funktioniert. Parameter ohne "()".

%Vor%     
Pradeep 30.11.2017 11:14
quelle

Tags und Links