【发布时间】:2018-10-10 21:57:49
【问题描述】:
假设我们有两个数据库表Instructor 和Instructor_Details。它们具有一对一的关系,因此每个讲师可以有一个讲师详细信息,并且一个讲师详细信息仅与一位讲师相关联。
在纯数据库术语中,Instructor 表应该是Instructor_Details 表的父表,Instructor 表的主键应该作为Instructor_Details 表中的外键。
我正在学习 Hibernate,互联网上的大多数 @OneToOne 示例都修改了表,使得 Instructor_Details 主键用作 Instructor 表中的外键,这似乎与 Instructor 应该是矛盾的Instructor_Details 的父级。
如何以最佳方式实现这两个实体,以便我可以使用Instructor 的主键作为Instructor_Details 中的外键。另外请解释我想要的实现中的获取类型和级联。带有代码的示例将非常有帮助。
编辑
假设表格的属性如下:
Instructor(instructor_id (主键), first_name, last_name)
Instructor_Details(detail_id (主键)、dob、address、instructor_id (instructor table 的外键))
【问题讨论】:
-
网络上有很多 JPA 1-1 关系的例子,不知道为什么你找不到与你认为正确的(你没有充分定义)相匹配的例子。 datanucleus.org:15080/products/accessplatform_5_2/jpa/… 如果
Instructor有一个InstructorDetails对象(而InstructorDetails没有Instructor对象),那么FK 唯一合乎逻辑的位置是在拥有对象的表中...Instructor。如果关系是bidir,那么你可以选择哪一方有FK。 -
我的全部观点是,由于
InstructorDetails的存在依赖于Instructor,所以Instructor的主键应该在InstructorDetails中,这将是理想的最佳数据库设计。我发现的所有示例都将InstructorDetails的主键作为FK 放在Instructor中,但从概念的角度来看,InstructorDetails在这种情况下绝不应该是父键。我们不应该修改我们的数据库设计以适应 Hibernate 代码 -
@BillyFrost 谢谢这就是我想要的。本文解释了牢记 RDBMS 的映射。不幸的是我之前没有找到这个。谢谢