JPA Hibernate manyToMany具有非唯一键

时间:2011-09-30 07:02:22

标签: hibernate jpa many-to-many formula

我有两个实体(表格):部门人员。两个表都有一个字段 CODE 不唯一

如何在这些表之间定义manyToMany双向关系?

  1. 部门有收集人员,其中包含所有 Person.CODE eq Department.CODE
  2. 的实体
  3. 合作伙伴拥有收集部门,其中包含 Department.CODE eq Partner.CODE
  4. 的所有实体

    我需要关系定义 - 没有sql或hpql查询。

    用HPQL做这个没问题,但我需要注释。

    选择给定departmentID的人员:

    select P.* from Person P, Deparment d  
    where d.department_id = ? and 
    p.code = d.code and 
    ? between d.validFrom and d.validTill and  
    ? between p.validFrom and p.validTill 
    

    可以用hibernate公式吗?

1 个答案:

答案 0 :(得分:0)

您肯定需要DB中的第三个表来拥有多对多关系,并将其称为department_person。从中声明两个引用PersonsDepartments表的外键。

之后,您可以:

1)定义一个新的JPA实体DepartmentPerson并定义每个外键的多对一关系。因此,您应该创建两个从Persons指向的一对多关系 DepartmentPerson以及从DepartmentDepartmentPerson产生您需要的收藏集。

2)在两个初始实体之一中定义多对多关系,表明department_person是关系的所有者。