如何使用Hibernate映射所有这些表?

时间:2019-06-16 17:25:38

标签: java hibernate orm hibernate-mapping

我有一个表PATIENT,其中有一些字段。还有一个CONTACT表,该表具有一个名为“ PatientId”的字段,该字段需要存储PATIENT的ID(是自动生成的),以及一个PATIENT_CONTACT表,该表仅将两个表相关联。

现在,这是棘手的部分。还有其他三个表:CONTACT_ADDRESS,CONTACT_PHONE,CONTACT_EMAIL。 CONTACT中的一行将具有与CONTACT_ADDRESS,CONTACT_PHONE和CONTACT EMAIL中的一个(只有一个)相同的ID。我如何使所有这些工作?

我尝试了很多方法,这就是我现在所拥有的:

@Entity
@Table(name = "patient", schema = "patient")
public class PatientEntity {

  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  @Column(name = "id")
  private Long id;

   //... more fields

  @OneToOne
  private ContactEmailEntity contactEmailEntity;

  @OneToOne
  private ContactAddressEntity contactAddressEntity;

  @OneToOne
  private ContactPhoneEntity contactPhoneEntity;
}

三个CONTACT_ *类是相似的,它们看起来像这样:

@Table(name = "contact_address", schema = "patient")
public class ContactAddressEntity {

  @Id
  @Column(name = "id")
  private Long id;

  // ... more fields

  @OneToOne(cascade = {CascadeType.ALL})
  @MapsId
  private ContactEntity contact;
}

我的CONTACT类如下:

@Table(name = "contacto", schema = "paciente")
public class ContactEntity {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Long id;

//... more fields

您能看到看起来不正确或可以做得更好的事情吗?每种方法都会出现各种错误。我最近的一个是:

ERROR: column patientent0_.contact_address_entity_contact_id does not exist

在尝试进行简单的患者查找时。请任何帮助表示赞赏!

0 个答案:

没有答案