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

发布于 2021-02-01 12:38: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子句无法识别通过这种方式传入的任何值。有谁知道解决这个问题的方法吗?

关注者
0
被浏览
103
1 个回答
  • 面试哥
    面试哥 2021-02-01
    为面试而生,有面试问题,就找面试哥。

    在您的情况下,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();
    


推荐阅读
知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看