当前位置: 首页 > 面试题库 >

在本机SQL查询中使用IN子句

须峰
2023-03-14
问题内容

我们正在尝试为本地sql查询动态生成IN子句以返回JPA实体。Hibernate是我们的JPA提供程序。我们的代码看起来像这样。

@NamedQuery(
    name="fooQuery",
    queryString="select f from Foo f where f.status in (?1)"
)

....

Query q = entityManager.createNamedQuery("fooQuery");
q.setParameter(1, "('NEW','OLD')");
return q.getResultList();

这是行不通的,in子句无法识别通过这种方式传入的任何值。有谁知道解决这个问题的方法吗?


问题答案:

在您的情况下,JPA支持命名列表参数:

@NamedQuery(
    name="fooQuery",
    queryString="select f from Foo f where f.status in (?1)"
)

Query q = entityManager.createNamedQuery("fooQuery");

List<String> listParameter = new ArrayList<>();
listParameter.add("NEW");
listParameter.add("OLD");

q.setParameter(1, listParameter); 
return q.getResultList();


 类似资料:
  • 问题内容: 我正在编写一个查询,其中我试图在子查询/ CTE中搜索通配符子字符串,并将此逻辑嵌套在我的CASE语句中。例如: 不幸的是,似乎没有办法做到这一点。由于我需要使用LIKE运算符,因此无法同时使用LIKE和IN。我将不得不分别编写每个LIKE语句,这将用于1000多个行。有人推荐更直接的解决方案吗?预先感谢! -编辑:对不起,每条评论有一些澄清。一个更好的例子: 在上表中,我需要在Use

  • 问题内容: 如何在Firebase Android中查询SQL IN子句?我想在Firebase Recycler适配器中使用它,以便根据某些条件仅检索某些子级。类似于以下语句: 我需要一个Firebase查询才能在Firebase Recycler适配器中使用它。 问题答案: 我找到了解决方案:我们无法使用。相反,我们必须创建可扩展的自定义适配器。 要将值传递给此适配器,首先我们必须使用检索数据

  • 问题内容: 我有一张表叫做产品。基本上,我需要在这样的各个字段中使用相同的词进行搜索,这很好用。 问题是现在我想要一个不同的查询。我只想显示来自特定国家/地区的所有汽车,以及其他字段。因此,如果我运行此查询 我从多个国家/地区获得结果,我在做什么错呢? 提前致谢 问题答案: 您只需要对您的条件进行分组,

  • 问题内容: 我有以下代码,问题是我的变量列表@LocationList本质上是一个csv字符串。当我将其用作(@LocationList)中whereLocationID的一部分时,它说它不是int(LocationID是int)。我怎样才能使该csv字符串在子句中被接受? 问题答案: 最有效的方法是使用动态SQL,例如提到rt2800(带有Michael Allen的注入警告) 但是,您可以创建

  • 而且 现在的问题是: > 我必须如何在ALL_ORDERS子查询的底部执行联接?我已经尝试了以下操作: null 感谢任何帮助。

  • 我有一个类Api,它包含一个数据列表: