1

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

要使用单个 studentId 检索单个学生,我使用以下有效的代码。

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

但是,当我尝试传入一个学生 ID 列表以返回超过 1 个学生时,我尝试了此代码,但它不起作用。希望有人可以阐明。任何帮助表示赞赏。

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

1 回答 1

0

可能是由于周围缺少括号:studentListIN子句的正确语法是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) )很有用

于 2013-08-25T16:01:42.290 回答