在本地SQL查询中使用IN子句 [英] Using IN clause in a native sql query

查看:237
本文介绍了在本地SQL查询中使用IN子句的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我们试图动态生成一个本地SQL查询的IN子句以返回一个JPA实体。 Hibernate是我们的JPA提供者。我们的代码看起来像这样。

We are trying to dynamically generate an IN clause for a native sql query to return a JPA entity. Hibernate is our JPA provider. Our code looks something like this.

@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子句不会识别通过这种方式传入的任何值。有谁知道这个问题的解决方案?

This doesn't work, the in clause does not recognize any of the values passed in via this manner. Does anyone know of a solution to this problem?

推荐答案

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

JPA supports named list parameters, in your case:

@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();

这篇关于在本地SQL查询中使用IN子句的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆