当前位置: 首页 > 面试题库 >

Hibernate外键作为主键的一部分

傅新
2023-03-14
问题内容

我必须使用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进行管理???

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


问题答案:

在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
}

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



 类似资料:
  • 所以我有一个表,它用一个昵称作为外键,用一个id作为主键: 到目前为止,一切都很好。然而,每当我试图从发布中获取主键时,它告诉我:“没有唯一的约束来匹配引用表“信息”的给定键。 但是,如果我将表中的信息信息ID更改为唯一,错误就会消失。这是正确的做事方式吗? 提前感谢大家!

  • 如何使用hibernate注释实现下表? 当前代码为:(为简洁起见,已删除) 使用者 社交网络 SocialProfile公司 显然我的代码现在不能正常工作。有人能解释一下吗?

  • 我有一个这样的实体: 多谢了,安德里亚

  • 它应该允许独立地更新表,并在父行被删除时删除子行。

  • 我有两张桌子: 用户(用户名、密码) 配置文件(profileId,gender,dateofbirding,...) 目前我正在使用这种方法:每个Profile记录都有一个名为“userid”的字段作为外键,它链接到用户表。当用户注册时,他的配置文件记录将自动创建。 我对我朋友的建议感到困惑:将“userid”字段作为外部和主键,并删除“profileid”字段。哪种方法更好?

  • 我有一个表,有一个复合PK:Customer;我有一个视图,没有PK:Purchase 为了绑定我的实体,Hibernate强制我声明一个PK。所以我为购买创建了一个复合PK。 普切斯: 普查塞普克: