【问题标题】:BeanCreationException on creating @manytomany entity relationshipBeanCreationException 创建@manytomany 实体关系
【发布时间】:2022-01-12 17:04:35
【问题描述】:

我正在创建三个表 Doctor、Patient 和 Specialty。患者可以只有一名全科医生,但一名医生可以是多名患者的全科医生。每个医生都有自己的专业(例如神经外科医生、心脏病专家、泌尿科医生等)由 BeanCreationException 引起的类路径资源,尤其是 mappedBy 引用了一个未知的目标实体属性。由于我是弹簧靴的新手,如果有人可以解释我,我会非常高兴。提前谢谢你

BaseEntity 类:

@MappedSuperclass
public class BaseEntity {

    @Id
    @GeneratedValue(strategy= GenerationType.IDENTITY)
    private long id;
}

医生类:

@Entity
@Table(name="doctor")
public class Doctor extends BaseEntity{

    private String name;

    @ManyToMany(mappedBy ="doctor")
    private Set<Specialty> specialties;

    @OneToMany(mappedBy ="doctor")
    private List<Patient> GpOfPatients;

}

患者类别:

@Entity
@Table(name="patient")
public class Patient extends BaseEntity{

    private String name;
    private String EGN;
    private boolean insurancesPaidInLastSixMonths;

    @ManyToOne
    @JoinColumn(name="gp_id")
    private Doctor doctor;

}

专业课:

@Entity
@Table(name="specialty")
public class Specialty extends BaseEntity{

    private String specialtyName;

    @ManyToMany
    @JoinTable(name="doctors_specialties",joinColumns = @JoinColumn(name="specialty_id"),
    inverseJoinColumns = @JoinColumn(name="doctor_id"))
    private Set<Doctor> doctors;

}

【问题讨论】:

    标签: java spring-boot entity-relationship


    【解决方案1】:

    在Doctor类中,您将specialties映射到doctor,但在Specialty中,Doctor集的名称为doctors,因此无法映射。

    您应该如下所示更改您的 Doctor 类:

    @Entity
    @Table(name="doctor")
    public class Doctor extends BaseEntity{
    
        private String name;
    
        @ManyToMany(mappedBy ="doctors")
        private Set<Specialty> specialties;
    
        @OneToMany(mappedBy ="doctor")
        private List<Patient> GpOfPatients;
    
    }
    

    【讨论】:

    • 非常感谢,终于有解决办法了。我到处搜索,仍然无法找到错误所在。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-31
    • 1970-01-01
    • 2020-05-23
    • 2023-03-15
    • 1970-01-01
    相关资源
    最近更新 更多