我正在尝试从插入到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();
答案 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)。