5
spring數據jpa 1.4.3與Oracle 11g。JPA命名查詢匹配IN子句中的元組列表
我有一個實體是這樣的:
class LinkRecord {
String value;
int linkType;
...
}
我使用(值,LINKTYPE),爲複合索引。 對於給定的(v,t)元組列表,我們需要選擇DB中的所有記錄,以便value = v,linkType = t。
基本上,我想建立這樣的查詢:
SELECT * FROM LINK_RECORD WHERE (VALUE, LINK_TYPE) IN (('value1', 0), ('value2', 25), ...)
在IN子句在列表中傳過來的PARAM。
由於我們正在處理大量的數據,因此逐個查詢元組是非常不可取的。
在我的倉庫我已經試過這樣:
@Query("select r from LinkRecord r where (r.value, r.linkType) in :keys")
List<LinkRecord> findByValueAndType(@Param("keys")List<List<Object>> keys);
,其中鍵是(長度爲2的列表)的列表。這讓我ORA_00920:無效的關係運算符。
有什麼辦法使用命名查詢來完成這項工作嗎?或者我必須訴諸本地SQL?
感謝您的幫助。