【问题标题】:Springboot data User relationship setupSpring Boot数据用户关系设置
【发布时间】:2017-06-29 02:25:18
【问题描述】:

我想知道如何设置以下关系:

这种关系与用户(实体)有关,其中每个用户可以来自多个组织之一。第二个实体用于记录每个用户的组织特定详细信息(实体)。

每个组织都有自己的实体。

@Entity
public class User

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long Id
private Name name

然后,每个组织都有几个实体。每个用户都需要有一个映射到这些实体之一中的一条记录:

@Entity
public class EducationUserDetails

@Id
private Long Id
@MapsId
private User user;
private String teacherRegistrationNo
private String teacherSchool


@Entity
public class DoctorUserDetails

@Id
private Long Id
@MapsId
private User user;
private String medicalCouncilNo
private String doctorHospital

如何设置/建模这种关系?

【问题讨论】:

  • 还不知道映射关联,请澄清。
  • 每个用户在其中一个组织详细信息上都有一条记录。
  • 就我想要做的事情而言。我有来自不同组织的用户,但无论用户来自哪个组织,某些领域都很常见,即每个用户,无论他们来自哪里,都有用户名、电子邮件、姓氏、名字。然后根据机构的不同,还有一些其他领域需要被捕获,比如医生注册或教师学校等。

标签: java hibernate jpa spring-boot spring-data-jpa


【解决方案1】:

请参阅MapsId documentation。它需要@ManyToOne@OneToOne 关系。

如果您想使用相同的主键进行一对一映射,则可以使用@PrimaryKeyJoinColumn

   @PrimaryKeyJoinColumn  
   @OneToOne 
   private User user;

示例见:https://www.mkyong.com/hibernate/hibernate-one-to-one-relationship-example-annotation/

【讨论】:

  • 我不明白,例如,作为教师的用户如何知道与教育表(与任何其他组织表相反)存在关系 - 除非用户有组织属性,然后是后端的一些 if 逻辑?
  • 我一直在 vladmihalcea.com/2016/07/26/… 关注 Vlads 的博客,但这不是纯粹的一对一,因为它更像是有时一对一。
  • 所以您想始终在用户和教育之间建立一对一的映射关系吗?为了更好地理解,拥有一个也显示双向和单向绑定的实体图会很有帮助。您始终可以定义从用户到教育的一对一映射。目前我不明白你在解决什么问题。最好你能提供你已经拥有的东西并描述 wgat 不起作用
猜你喜欢
  • 2017-10-28
  • 1970-01-01
  • 2016-05-03
  • 1970-01-01
  • 2016-10-03
  • 2020-12-05
  • 2018-06-14
  • 2017-11-04
  • 2021-09-20
相关资源
最近更新 更多