JPQL - 插入IN的项目列表

时间:2012-07-18 16:55:44

标签: java jpa jpql

在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列表。

1 个答案:

答案 0 :(得分: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();