Frühjahr Daten jpa 1.4.3 mit Oracle 11g.JPA benannte Abfrage entspricht einer Liste von Tupeln in IN-Klausel
Ich habe ein Unternehmen wie folgt aus:
class LinkRecord {
String value;
int linkType;
...
}
I (Wert, link) verwende als Composite-Index. Für eine gegebene Liste von (v, t) Tupeln müssen wir alle Datensätze im DB so auswählen, dass value = v, linkType = t.
Grundsätzlich möchte ich diese Abfrage erstellen:
SELECT * FROM LINK_RECORD WHERE (VALUE, LINK_TYPE) IN (('value1', 0), ('value2', 25), ...)
, wo die Liste in der IN-Klausel wird als param eingeleitet.
Da wir mit einer großen Datenmenge arbeiten, wäre es sehr unerwünscht, die Tupel nacheinander abzufragen.
In meinem Repository Ich habe dies versucht:
@Query("select r from LinkRecord r where (r.value, r.linkType) in :keys")
List<LinkRecord> findByValueAndType(@Param("keys")List<List<Object>> keys);
wo Schlüssel ist eine Liste von (Listen der Länge 2). Das bringt mich zu ORA_00920: ungültiger relationaler Operator.
Gibt es eine Möglichkeit, dies mit einer benannten Abfrage zu machen? Oder muss ich auf native sql zurückgreifen?
Danke für Ihre Hilfe.