Hibernate映射到公共表
这是我的医生Hibernate映射到公共表,hibernate,Hibernate,这是我的医生 @Entity public class Doctor implements java.io.Serializable { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Integer id; private String firstName; @OneToMany private List<Status>status=new ArrayList<Status>(); @Emb
@Entity
public class Doctor implements java.io.Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
private String firstName;
@OneToMany
private List<Status>status=new ArrayList<Status>();
@Embedded
private Chamber chamber;
public List<Status> getStatus() {
return status;
}
public void setStatus(List<Status> status) {
this.status = status;
}
public Chamber getChamber() {
return chamber;
}
public void setChamber(Chamber chamber) {
this.chamber = chamber;
}
public Doctor() {
}
public Integer getId() {
return this.id;
}
public void setId(Integer id) {
this.id = id;
}
public String getFirstName() {
return this.firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
}
现在,您可以看到实体医生和患者中都有公共字段状态。现在,如果我坚持使用表Doctor and patient,将创建两个表Doctor_status和patient_status。但我需要一个公共表,其中Doctor_id和patient_id将由一个列表示,而另一个列将是status_id。我如何才能做到这一点?真的吗我不想那样。这样就不可能知道公共表中的一行是指医生还是患者。您将无法在此公共列上添加外键约束。您也无法在status/id元组上添加unicity约束。那么我是否必须创建两个不同的表,如doctor\u status和patient\u status?或者是否有更好的解决方案?是的,您应该这样做。
@Entity
public class Patient implements java.io.Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
private String firstName;
private String lastName;
@OneToMany
private List<Status>status=new ArrayList<Status>();
public List<Status> getStatus() {
return status;
}
public void setStatus(List<Status> status) {
this.status = status;
}
public Patient() {
}
public Integer getId() {
return this.id;
}
public void setId(Integer id) {
this.id = id;
}
public String getFirstName() {
return this.firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return this.lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
}
@Entity
public class Status {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
private String status;
@Temporal(javax.persistence.TemporalType.DATE)
private Date date;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
}