Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate映射到公共表_Hibernate - Fatal编程技术网

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;
}

}