将Array作为路径参数和hibernate查询

时间:2013-08-25 15:18:31

标签: sql hibernate list

我正在尝试从插入到pathparam中的列表中检索学生列表,该列表使用hibernate基于studentId检索学生。

要使用单个studentId检索单个学生,我使用以下代码正常工作。

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

然而,当我尝试传入一个studentID列表以返回超过1个学生时,我尝试了这个代码,但它不起作用。希望有人可以解释一下。 任何帮助表示赞赏。

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

1 个答案:

答案 0 :(得分: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:

  

将多个值绑定到命名查询参数。 Hibernate类型   首先通过查询中的使用/位置检测参数   如果还不够,那么第二次从第一类中猜到了   集合中的对象。这对于绑定值列表很有用   表达式如 foo.bar in(:value_list)