我们如何使用Hibernate JPA进行一对一映射呢?其实对于熟悉hibernate的人来说是非常容易上手的,如果不熟悉Hibernate的人也没有关系。因为JPA比Hibernate的映射更加简单!下面我们以AddressEO和CustomerEO为例,为了演示我们假定客户、地址为一对一的关系。
AddressEO :
package com.kingqueen.entity;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name = "T_ADDRESS")
public class AddressEO {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int addressId;
private String province;// 省份
private String city;
private String postCode;
private String detail;
public int getAddressId() {
return addressId;
}
public void setAddressId(int addressId) {
this.addressId = addressId;
}
public String getProvince() {
return province;
}
public void setProvince(String province) {
this.province = province;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getPostCode() {
return postCode;
}
public void setPostCode(String postCode) {
this.postCode = postCode;
}
public String getDetail() {
return detail;
}
public void setDetail(String detail) {
this.detail = detail;
}
}
CustomerEO:
package com.kingqueen.entity;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;
import javax.persistence.Table;
@Entity
@Table(name = "T_CUSTOMER")
public class CustomerEO {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
private String name;
/*
* 客户地址一对一关联
*/
@OneToOne(cascade = { CascadeType.ALL })
@JoinColumn(name = "addressId")
private AddressEO addressEO;
public AddressEO getAddressEO() {
return addressEO;
}
public void setAddressEO(AddressEO addressEO) {
this.addressEO = addressEO;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
亲使用Hibernate是不是非常简单呢?最后总结下,一对一单向关联实际上使用到的注解是
@OneToOne(cascade = { CascadeType.ALL }) 表示关系。
@JoinColumn(name = "addressId") 表示外键引用列。