JPQL查询where子句使用IN,如何将参数传递给查询
Posted
技术标签:
【中文标题】JPQL查询where子句使用IN,如何将参数传递给查询【英文标题】:JPQL query where clause using IN, How to pass the parameter to the query 【发布时间】:2018-06-18 00:01:27 【问题描述】:我有 JPQL 查询,我得到以下查询的空结果。请看附件代码
String names = "'laptop','mobile'";
LoadContext testDataQuery = LoadContext.create(testData.class);
testDataQuery.setQuery(LoadContext.createQuery(
"select pd from demo$TestData pd where pd.dataName.name in (:names)")
.setParameter("measures", names));
List testDataQueryList = dataManager.loadList(testDataQuery); // Here I am getting empty list.
请告诉我,如何将名称传递给 JPQL where clasue for In。
谢谢!!
【问题讨论】:
将您的数据库 DDL 放入问题中并格式化您的代码。 【参考方案1】:您可以将名称的List
添加到setParameter
方法中。
【讨论】:
【参考方案2】:对IN
参数使用List
而不是String
。如果您将 names
声明更改为此,您的示例应该可以工作:
List<String> names = Arrays.asList("laptop", "mobile");
并保持其他所有内容不变。
注意你也可以去掉IN
子句中的括号
pd.dataName.name in :names
希望这会有所帮助!
【讨论】:
以上是关于JPQL查询where子句使用IN,如何将参数传递给查询的主要内容,如果未能解决你的问题,请参考以下文章
Spring JPA Hibernate JPQL 查找在 where 子句中传递的项目的索引
JPQL:如何使用 where 子句实现与集合成员声明相同的功能?