2013-08-25 27 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 –