2011-02-02 65 views
2

使用Java,Hibernate。使用IN子句的Hibernate createNativeQuery

我有一個查詢

String pixIds = "1,2,3"; 
String query = "SELECT * FROM comment WHERE PIX_ID IN (:pixIds)"; 
q.setParameter("pixIds", pixIds); 
List<Object[]> results = q.getResultList(); 

我不能對這個參數結合使用上面的代碼pixIds。什麼是正確的方法來做到這一點?

注:我在這裏的查詢是我的實際查詢的簡化版本。

回答

5

以下方法效果
公衆查詢setParameterList(字符串名稱,收集丘壑)拋出HibernateException的

4

Hibernate不支持在SQL查詢中綁定集合到IN (...)

你需要的工作方式相同,與普通的JDBC:給定一個集合,動態地IN條款生成的?小號適當數量的查詢,然後綁定該集合的元素?秒。

+0

對不起,我錯過了補充說pixId的是一個字符串,而不是一個集合。編輯我的原始帖子以包含更改。 – smahesh 2011-02-02 18:54:23

+0

@sammichy:完全一樣的東西:你需要創建三個`?`s並用`setParameter()`調用將`1`,`2`和`3`綁定到它們。 – axtavt 2011-02-02 19:12:27