JPQL查询where子句使用IN,如何将参数传递给查询

时间:2018-01-09 00:30:34

标签: java jpql

我有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,其中包括In。

谢谢!

2 个答案:

答案 0 :(得分:0)

使用List代替IN参数代替String。如果您将names声明更改为:

,则您的示例应该有效
List<String> names = Arrays.asList("laptop", "mobile");

并按原样保留其他所有内容。

请注意,您还可以删除IN子句

中的括号
pd.dataName.name in :names

希望这会有所帮助!!

答案 1 :(得分:0)

您可以在List方法中添加setParameter个名称。