Hibernate Criteria:从具有外键关系的两个表中选择?

oik*_*opo 1 mysql hibernate hibernate-criteria

我在我的mysql数据库2表中:

1.teacher(id(pk),name,phone,email)
2.student(id(pk),teacher'sid(FK),name,phone,email)
Run Code Online (Sandbox Code Playgroud)

学生表有一个外键,老师的,对于老师.id.

我想选择他们的id(teachers.id)与(student.teacher'sid)相同的老师,其中student.name ="Steven".

我创建了两个具有与表相同的类名和属性的类,并且我已经配置了映射.

@Entity
class teacher {
@Id
int id;
String name;
String phone;
String email;
}

@Entity
class student {
@Id
int id;
int teachersid;
String name;
String phone;
String email;
}
Run Code Online (Sandbox Code Playgroud)

我可以通过以下方式选择他的名字是"史蒂文"的学生:

Criteria q = session.createCriteria(student.class).add(
                Restrictions.eq("name", "stevens"));
Run Code Online (Sandbox Code Playgroud)

如何能够挽回"史蒂文"的老师?就像是

(select * from teacher(where teacher.id = student.teachersid(where student.name="stevens")))
Run Code Online (Sandbox Code Playgroud)

,但使用Hibernate Criteria Api.

提前致谢!

Jav*_*a P 6

Criteria c = s.createCriteria(Teacher .class,"tchr");
c.createCriteria("students", "s");//Teacher class should contain students collection
c.add(Restrictions.eq("s.name", "Ashok"));
List l=c.list();
Run Code Online (Sandbox Code Playgroud)

希望这会帮助你.如果您有任何疑问,请告诉我.