在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列表。
答案 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();