关于hql中集合属性的条件查询语句怎么写

有两个实体student 与 exam,它们是多对多的关系,student中有 List examlist;
前台选择exam的id(考试编号)选项(可多选),如何查询参加过所选考试的学生?hql语句该怎么写呢,使用多个占位符写死不可取,因为不知道前台会选择几个考试选项。
有两个entity,要实现查询参加前台已选择考试的编号(可多选)的学生
1.Student
2.Exam
3.StuExam中间实体(Exam 与 Student)

class Student{
private int id;
........
@OneToMany(mappedBy="student",targetEntity="StuExam")
private List stuExamList = new ArrayList();

}

class Exam{

private int id;
........

@OneToMany(mappedBy="exam",targetEntity="StuExam")
private List stuExamList = new ArrayList();
}

class stuExam{

private int id;

@ManyToOne
@JoinColumn(name="examId)
private Exam exam;

@ManyToOne
@JoinColumn(name="studentId")
private Student student;

}

你首先新建一个集合 ,这个集合 把你的多选的ID 全部放进来 这一步不会再详细问我
然后建立sql 语句 循环数组长度,执行就好 如果你想要一个几何中
不限麻烦 就联合查询 ,想简单一点就list追加

例如 一个学生表Student 一个教师表teacher学生表属性 id ; name ; Setteachers;教师表 属性 id ; name ; Setstudents;已有学生实例 student1,要查询返回 教这个学生的教师集合; 请问该如何写HQL 语句; WHERE 后面语句 如何写? public ListfindByStudentr(Student student) { return getSession().createQuery( "FROM Teacher t WHERE XXXXXXXXXX") .setParameter(0, student) .list(); }

代码如下 :记得采纳谢谢!
public List ListfindByStudentr(Student student) {
Student stu= (Student)session.createQuery("FROM Student stu WHERE id = ?") .setParameter(0, student.id); ).uniqueResult();
return stu.getTeachers;
}

以上两个答案不知道哪里来的,我哪里说有Teacher?

可以写一个方法将多选的考试编号拼接起来,然后把方法作为条件放到hql语句里面进行查询

写一个方法将多选的考试编号拼接起来

老哥 我能问一下你的表结构么
我感觉你没用关系表 直接映射多对多么
解决你第二个问题,判断你传回来的数值是否为空
比如这样写吧
StringBuffer hql = new StringBuffer();
hql.append(select * from xx where1=1)
if(
student.xx==null&&student.xx=""
)
hql.append(and ....)

我的问题没有说明白,有两个entity,要实现查询参加前台已选择考试的编号(可多选)的学生
1.Student
2.Exam
3.StuExam中间实体(Exam 与 Student)

class Student{
private int id;
........
@OneToMany(mappedBy="student",targetEntity="StuExam")
private List stuExamList = new ArrayList();

}

class Exam{

private int id;
........

@OneToMany(mappedBy="exam",targetEntity="StuExam")
private List stuExamList = new ArrayList();
}

class stuExam{

private int id;

@ManyToOne
@JoinColumn(name="examId)
private Exam exam;

@ManyToOne
@JoinColumn(name="studentId")
private Student student;

}