Hibernate外键作为主键的一部分

ras*_*cio 9 hibernate foreign-keys composite-primary-key


我必须使用hibernate并且不太确定如何解决这个问题,我有2个表,其中有一个1..n关系,如下所示:

-------
TABLE_A
-------
first_id (pk)
second_id (pk)
[other fields]

-------
TABLE_B
-------
first_id (pk)(fk TABLE_A.first_id)
second_id (pk)(fk TABLE_A.second_id)
third_id (pk)
[other fields]

如何使用Hibernate管理它?

我不知道如何管理第二个表的主键...

JB *_*zet 16

有一个例子与Hibernate参考文档中的情况完全相似.就在这个例子之前,你会找到解释.这是与您的问题匹配的示例(User是表A,Customer是表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
}
Run Code Online (Sandbox Code Playgroud)

注意:如果你有这两个表的代理标识符会简单得多.除非你被迫处理遗留架构,否则请自己帮忙并使用代理键.