2012-05-21 62 views
2

是新來的JPA和我能夠迅速地得到它,我一直在嘗試使用查詢「IN」運營商選擇查詢,並已得到錯誤跌。我要做的就是,我從一個功能(長)消息ID的數組,我用它來選擇基於這些ID的記錄。這裏是我的查詢JPA - 使用IN操作符長數組拋出投例外

select t from MessageTable t where t.messageId IN (:id) 
query.setParameter("id", id); 

我剛剛給你看了部分代碼,實體messageId很長,在Oracle DB中它的編號。當我嘗試的,就像長變量它的工作原理,它似乎並不當我通過多頭排列工作。有過任何一個遇到這樣的問題可以有人幫忙。這是錯誤

14:24:49428 INFO [LongType] '[J @ 14f76da' 不能結合值 參數:1; [J不能轉換爲java.lang.Long中

回答

6

陣列Long[]long[]無效類型的IN參數 - 只以下是:

  • Long
  • long
  • List<Long>

如果你想堅持使用JPA,而不是使用org.Hibernate.Query.setParameterList通過Kshitij建議,你有你的論點轉換爲List<Long>

轉換很容易,無論是通過滾動做你自己或例如與ArrayUtil幫助:

long[] id = {1L, 2L}; 
Long[] longs = ArrayUtils.toObject(id); 
List<Long> list = Arrays.asList(longs); 
+0

葉氏,我通過它List和它的工作。謝謝。 – Bash

+0

API允許你通過收集,所以它會與設置和其他收藏亞型,而不僅僅是列表工作 – tzimnoch

2

試試這個:當你想覈對長/長

query.setParameterList("id", ids); 
+0

謝謝,我不得不爲它的列表。 – Bash