Hibernate Criteria连接两个表

时间:2017-03-29 14:48:38

标签: hibernate join criteria

我有3张桌子: PERSON:ID,NAME,SURNAME 团队:身份,姓名,人,角色 角色:ID,POSITION 其中TEAM可以有一个PERSON列表

我需要使用Hibernate Criteria创建一个查询,如下所示: 从PERSON p,TEAM t中选择*     其中t.ROLE =“myRole”和t.PERSON = p.id

我想获得具有给定ROLE的TEAM中的PERSON列表。 你能帮助我吗?感谢

1 个答案:

答案 0 :(得分:3)

团队有个人名单。因此,不要在Team表中使用Person列,而应在Person表中包含team_id列。我假设Role与Person相关联。因此,您的表应如下所示:

Person:ID,NAME,SURNAME,TEAM_ID,ROLE_ID 团队:ID,NAME 角色:ID,POSITION

然后,获取具有给定角色的给定团队中Person的列表的查询是:

Select * from Person p, Team t, Role r where p.team_id=t.id and p.role_id=r.id and r.position = givenPosition and t.name=givenTeam

在标准中

`Criteria c = session.createCriteria(Person.class, "p");
c.createAlias("p.team", "t");
c.createAlias("p.role", "r");
c.add(Restrictions.eq("t.name", givenTeam));
c.add(Restrictions.eq("r.position", givenPosition ));`