2012-07-18 43 views
1

在JPA中,在創建查詢,我們可以執行JPQL - 將項目列表中

(" ... 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?

否則,我將不得不構建查詢並迭代插入到列表中的項目。

回答

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