場景
一個人可以有多個電話號碼;但是電話號碼並不能失去人的存在而存在,所以是一個失去獨立性的Pojo;所以電話號碼不能映射爲一個實體,這時就需要映射爲組件,及人的信息裏邊包含電話號碼。是整體與部分的關係。但由於這個電話號碼可能有多個。
構建實體映射
@Table(name = "Person")
@Entity
public class Person {
@Id
private String id;
private String name;
@ElementCollection
private List<String> phone;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<String> getPhone() {
return phone;
}
public void setPhone(List<String> phone) {
this.phone = phone;
}
@Override
public String toString() {
return "Person{" +
"id=" + id +
", name='" + name + '\'' +
", phone=" + phone +
'}';
}
}
數據建表
Hibernate: create table person (id varchar(255) not null, name varchar(255), primary key (id)) engine=MyISAM
Hibernate: create table person_phone (person_id varchar(255) not null, phone varchar(255)) engine=MyISAM
Hibernate: alter table person_phone add constraint FK13ncjews6t1770lbwj3w0x89i foreign key (person_id) references person (id)