【问题标题】:JPQL query where clause using IN, How to pass the parameter to the queryJPQL查询where子句使用IN,如何将参数传递给查询
【发布时间】: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 放入问题中并格式化您的代码。

标签: java jpql


【解决方案1】:

您可以将名称的List 添加到setParameter 方法中。

【讨论】:

    【解决方案2】:

    IN 参数使用List 而不是String。如果您将 names 声明更改为此,您的示例应该可以工作:

    List<String> names = Arrays.asList("laptop", "mobile");
    

    并保持其他所有内容不变。

    注意你也可以去掉IN子句中的括号

    pd.dataName.name in :names
    

    希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 2018-07-17
      • 1970-01-01
      • 1970-01-01
      • 2015-06-12
      • 1970-01-01
      • 1970-01-01
      • 2020-04-23
      • 1970-01-01
      相关资源
      最近更新 更多