我有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列表。 你能帮助我吗?感谢
答案 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 ));`