2011-07-05 42 views
0

我有一個產品列表(產品是id,名稱,價格等)。 產品在另一個表格報告中由id引用(不在hibernate xml中鏈接)。休眠,參數列表和對象列表

我想要一個方法,將收到產品列表,然後採取這些產品並在(產品列表)中生成where x。我的HQL是這樣的:

SELECT category, SUM(id.downloadTrackingCount) " + 
"FROM Reporting " + 
"WHERE (id.productId IN (:products)) AND (id.fullDownloadDate BETWEEN :startDate AND :endDate) " + 
"GROUP BY category"; 

但是當我嘗試的setParameter的產品列表我得到一個錯誤,說不能投產品以整數。有沒有一些方法可以用來告訴Hibernate在列表中的每個產品上執行getId,然後填寫:products參數?

回答

2

我認爲你最好的選擇是走過產品清單並將id值收集到單獨的列表中作爲參數使用。請注意,您需要考慮角落案例,例如空列表和列表,其中IN子句可以處理更多條目。

+0

這就是我的想法,我只是希望超出希望。 – arinte

+0

這可能不是那麼糟糕:)'IN'可以只有很多項目,所以你會有很少的迭代次數。 –