wiosenne dane jpa 1.4.3 z Oracle 11g.Zapytanie nazwane JPA pasuje do listy krotek w klauzuli IN
Mam podmiot tak:
class LinkRecord {
String value;
int linkType;
...
}
używam (wartość, LINKTYPE) jako wskaźnika zespolonego. Dla danej listy (v, t) krotek, musimy wybrać wszystkie rekordy w DB, aby wartość = v, linkType = t.
Zasadniczo, chcę zbudować to zapytanie:
SELECT * FROM LINK_RECORD WHERE (VALUE, LINK_TYPE) IN (('value1', 0), ('value2', 25), ...)
gdzie lista w klauzula jest przekazywana jako param.
Ponieważ pracujemy z dużą ilością danych, byłoby bardzo niepożądane, aby wyszukiwać krotki jeden po drugim.
W moim repozytorium Próbowałem to:
@Query("select r from LinkRecord r where (r.value, r.linkType) in :keys")
List<LinkRecord> findByValueAndType(@Param("keys")List<List<Object>> keys);
gdzie klawisze znajduje się lista (listy o długości 2). W ten sposób otrzymuję ORA_00920: nieprawidłowy operator relacyjny.
Czy jest jakiś sposób, aby to działało przy użyciu nazwanego zapytania? Czy muszę uciec się do natywnego sql?
Dzięki za pomoc.