JPA @ElementCollection

場景

一個人可以有多個電話號碼;但是電話號碼並不能失去人的存在而存在,所以是一個失去獨立性的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)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章