使用hibernate和3个实体设置表

时间:2017-10-11 07:32:02

标签: java mysql hibernate

我是Hibernate的新手,对设置我的数据库有疑问。

我有3个实体:Project,R1和R2。 一个项目可以有一个到多个R1,R1可以属于多个项目。 R2属于一对Project-R1。 R2可以属于Project-R1的多对夫妇。

示例:

我的想法是先将Project连接到R1,让Project记住它有哪些R1。所以第三个表用于连接Project和R1的主键。

当我必须将R2耦合到Project-R1时,我正在考虑使用另一个连接表和Project-R1和R2的主键。但是如何使用Hibernate进行最后一次连接,而不使用在Project-R1-R2旁边有自己的主键的连接表。

甚至可能吗?

1 个答案:

答案 0 :(得分:1)

Hibernate docs给出了三元关联的例子:

@Entity
public class Company {
 @Id 
 int id;
 ...
 @OneToMany // unidirectional
 @MapKeyJoinColumn(name="employee_id")
 Map<Employee, Contract> contracts;
}

// or

<map name="contracts">
 <key column="employer_id" not-null="true"/>
 <map-key-many-to-many column="employee_id" class="Employee"/>
 <one-to-many class="Contract"/>
</map>

文档还指出,R2-(P + R1)类型的关联通常会被建模为单独的实体类。这也是我的方法。