1

在 JPA 中,在创建查询时,我们可以执行

(" ... where a.name = :name ...")
.setParameter("name", user.getName());

但是,我希望 JPQL 中是否有某种方法可以做到:

(" ... where a.name in (:namelist) ...")
.setParameter("namelist", (List<String>)names);

或者

" ... where a.name in (:namelist) ...")
.setParameter("namelist", (String[])names);

不必完全是我上面举例说明的方式。我正在寻找任何方便的方法来在查询中构建一个 IN(或 NOT IN)列表。欢迎任何形式的建议。也许,有一个Apache util?

否则,我将不得不构造查询并将项目迭代地插入到 IN 列表中。

4

1 回答 1

1

从 JPA2 开始,它应该开箱即用:

select a from Something a where a.name in :param

其中 :param 是正确类型的集合。像:

List<Product> products =
    em.createQuery("select p from Product p where p.productId in :ids")
    .setParameter("ids", Arrays.asList(980001, 980032, 986712)).getResultList();
于 2012-07-18T17:00:24.873 回答