如果使用了表关联,并且该表又设置了外键,则在映射实体关系时可以使用默认的映射关系设置。例如,将保存两个表关系的SQL语句修改为以下所示。
--客户地址关系表
CREATE TABLE customer_address (
customer_id int(20) NOT NULL ,
address_id int(20) NOT NULL UNIQUE,
)
--创建customer_id外键
ALTER TABLE customer_address ADD CONSTRAINT fk_ref _customer
FOREIGN KEY (customer_id) REFERENCES customer (id);
--创建address_id外键
ALTER TABLE customer_address ADD CONSTRAINT fk_ref_address
FOREIGN KEY (address_id) REFERENCES address (id);
这样,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
public Collection<AddressEO> getAddresses() {
return addresses;
}
public void setAddresses(Collection addresses) {
this.addresses = addresses;
}
}
提示:对于使用外键关联表结构的一对多映射,不能使用默认的映射配置。