一尘不染

Hibernate外键作为主键的一部分

hibernate

我必须使用hibernate模式,并且不太确定如何解决此问题,我有2个具有1..n关系的表,如下所示:

-------
TABLE_A
-------
first_id(pk)
second_id(pk)
[其他领域]

-------
TABLE_B
-------
first_id(pk)(fk TABLE_A.first_id)
second_id(pk)(fk TABLE_A.second_id)
third_id(pk)
[其他领域]

我该如何使用Hibernate进行管理???

我不知道如何管理第二张表的主键…


阅读 315

收藏
2020-06-20

共1个答案

一尘不染

Hibernate参考文档中有一个与您的案例完全相似的示例。在此示例之前,您将找到解释。这是与您的问题匹配的示例(用户是表A,客户是表B):

@Entity
class Customer {
   @EmbeddedId CustomerId id;
   boolean preferredCustomer;

   @MapsId("userId")
   @JoinColumns({
      @JoinColumn(name="userfirstname_fk", referencedColumnName="firstName"),
      @JoinColumn(name="userlastname_fk", referencedColumnName="lastName")
   })
   @OneToOne User user;
}

@Embeddable
class CustomerId implements Serializable {
   UserId userId;
   String customerNumber;

   //implements equals and hashCode
}

@Entity 
class User {
   @EmbeddedId UserId id;
   Integer age;
}

@Embeddable
class UserId implements Serializable {
   String firstName;
   String lastName;

   //implements equals and hashCode
}

注意:如果您拥有这两个表的代理标识符,则要简单得多。除非您被迫处理旧式架构,否则请帮自己一个忙,并使用代理密钥。

2020-06-20