【问题标题】:How to implement the IS-A relationship in Hibernate Spring Boot?如何在 Hibernate Spring Boot 中实现 IS-A 关系?
【发布时间】:2017-05-17 08:33:23
【问题描述】:

我有 3 个表:Account、Doctor、Patient

  • 帐户(User_id、全名、电子邮件、密码)
  • 患者(Patient_id、healthrecord_id、insurance_id)
  • 医生(Doctor_id、professional_statement、clinic_id)

Patient_id 和 Doctor_id 是主键,也是 Foreign_key,它引用了 Account 表中的 User_id。我认为这是客户-患者、客户医生的一对一关系。我不知道如何在 Hibernate Entity 中实现它

【问题讨论】:

    标签: mysql hibernate spring-boot


    【解决方案1】:
    @Entity
    public class Account {
    
        @Id
        private String id;
    
        @OneToOne
        private User user;
    }
    

    创建超类

    @MappedSuperclass
    public abstract class User {
    
        @Id
        private String id;
    
    }
    

    并用你的实体扩展它。

    @Entity
    public class Doctor extends User {
    
        private String name;
    
        private String email;
    
    }
    

    您需要创建一个(抽象)类用户并扩展 患者和医生也是如此。您只需要在基本实体上定义id 字段。 您还必须为所有类提供 getter 和 setter。我建议使用lombok 注释@Getter@Setter

    或者您可以将它们一一映射到 Account 实体。

    如果有不清楚的地方请联系我!

    【讨论】:

    • 我可以通过使用 OneToOne 关系做的更简单吗?我将在 Doctor 和 Patient 表中添加另一个 user_id,并将其作为 Account 表的外键。可能吗?比如 Account (User_id, field 1, field 2) and Doctor( Doctor_id, User_id, f1, f2 ,...) 和 Patient (Patient_id, User_id, f3, f4,...)
    • 当然可以。在这种情况下,您将不需要abstract User class
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-04
    • 2020-06-01
    • 1970-01-01
    • 2017-11-10
    • 2015-12-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多