【问题标题】:Hibernate Criteria join two tablesHibernate Criteria 连接两个表
【发布时间】:2017-03-29 14:48:38
【问题描述】:

我有 3 张桌子: 人:身份证,姓名,姓氏 团队:ID、姓名、人员、角色 角色:ID,职位 其中 TEAM 可以有一个 PERSON 列表

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

我想获取 TEAM 中具有给定角色的 PERSON 列表。 你能帮助我吗?谢谢

【问题讨论】:

    标签: hibernate join criteria


    【解决方案1】:

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

    人员:ID、NAME、SURNAME、TEAM_ID、ROLE_ID 团队:ID、NAME 角色:ID、POSITION

    那么获取给定团队中具有给定角色的人员列表的查询是:

    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 ));`
    

    【讨论】:

    • 如果我必须返回一个 VO,其中每个表都有一列怎么办?
    • r 和 t 映射到哪里,就像你用 Person 映射 p 一样?
    猜你喜欢
    • 2011-08-30
    • 2012-08-20
    • 1970-01-01
    • 2012-08-18
    • 2012-01-11
    • 1970-01-01
    • 2013-05-27
    • 2011-01-16
    • 1970-01-01
    相关资源
    最近更新 更多