在数据库中,对应的表customer和表address定义的结构SQL语句如下所示。
CREATE TABLE customer (
id int(20) NOT NULL auto_increment,
name varchar(100) ,
PRIMARY KEY (id)
)
--地址表
CREATE TABLE address (
id int(20) NOT NULL auto_increment,
province varchar(50) ,
city varchar(50) ,
postcode varchar(50) ,
detail varchar(50) ,
customer_id int(20),
PRIMARY KEY (id)
)
表address中的customer_id字段为表customer中的id的值。通过customer_id,可以找到对应的customer记录。
表中存在数据时,如图所示。
此时将表customer映射为CustomerEO实体,代码如下所示。
@Entity
@Table(name = "customer")
public class CustomerEO implements java.io.Serializable {
private Integer id;
private String name;
……
private Collection<AddressEO> addresses = new ArrayList<AddressEO>();
@OneToMany(cascade = { CascadeType.ALL })
@JoinColumn(name = "customer_id")
public Collection<AddressEO> getAddresses() {
return addresses;
}
public void setAddresses(Collection addresses) {
this.addresses = addresses;
}
}