2013-08-25 57 views
1

我想從列表中插入到pathparam中檢索學生的列表,基於他們的studentI使用休眠檢索學生。在數組中作爲路徑參數和冬眠查詢

要使用單個studentId檢索單個學生,我使用以下正在工作的代碼。

student = (student) session.createQuery("from student as student 
where student.studentId = :studentId") 
.setString("studentId", studentId).uniqueResult(); 

然而,當我嘗試在studentIDs列表返回超過1名學生通過,我想這個代碼,但它不工作。希望有人能夠闡明一些看法。 任何幫助表示讚賞。

students = session.createQuery("from student as student 
where student.studentId in :studentList").setParameterList("studentList", studentList).list(); 

回答

0

可能是由於缺少圍繞:studentList括號;爲IN條款正確的語法是IN (values list)那麼改變你的查詢作爲

students = session.createQuery("from student as student 
where student.studentId in (:studentList)").setParameterList("studentList", studentList).list(); 

從Query.setParametersList()的javadoc:

綁定多個值到一個名爲查詢參數。休眠類型 該參數首先通過查詢 中的用法/位置檢測到,並且如果第二次從集合中第一個 對象的類中猜測出來,則該參數不足。這對於將值列表 綁定到表達式(如foo.bar in(:value_list))很有用。

+0

這似乎給我這個錯誤 java.lang.String不能轉換爲java.lang.Integer 任何想法? –

+0

是同一類studentId的studentList嗎?檢查我的回答關於類型檢測 –

+0

似乎返回一些光,有沒有什麼辦法來測試它在我的網址? XXX.XXX.XXX.XXX/StudentWS/getStudentsFromStudentList/{1,3,5} or it is 1%3%5 –