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?
感谢您的帮助。