1

休止状態を使用して、studentId に基づいて学生を取得する pathparam に挿入されたリストから学生のリストを取得しようとしています。

単一の学生 ID を持つ単一の学生を取得するには、機能している次のコードを使用します。

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

ただし、studentID のリストを渡して複数の学生を返そうとすると、このコードを試しましたが、うまくいきません。うまくいけば、誰かが光を当てることができます。どんな助けでも大歓迎です。

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

1 に答える 1

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)などの式にバインドするのに役立ちます。

于 2013-08-25T16:01:42.290 に答える