JPA 单向一对一关联(@OneToOne)
下面以客户实体(CustomerEO)与地址实体(AddressEO)为例来说明如何映射一对一关系的映射.
一个客户对应一个地址,通过客户可以获得该客户的地址信息。客户和地址是一对一的关系,但通过地址不能获得客户信息,客户和地址是单向关联.
Customer.javapackage com.demo.bean.onetoone;import javax.persistence.CascadeType;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.JoinColumn;import javax.persistence.OneToOne;import javax.persistence.Table;import javax.persistence.Version;/** * 客户实体与地址实体是单向的一对一的关系 */@Entity@Table(name = "t_customer")public class Customer {@Versionprivate Long version;@Id@GeneratedValueprivate Long id;//客户ID@Columnpublic String name;//客户名称//onetoone@OneToOne(cascade={CascadeType.ALL})@JoinColumn(name="address_id")public Address address;public Customer(){}//-----------------可省get,set--------------public Long getVersion() {return version;}public void setVersion(Long version) {this.version = version;}public Long getId() {return id;}public void setId(Long id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Address getAddress() {return address;}public void setAddress(Address address) {this.address = address;}} Address.javapackage com.demo.bean.onetoone;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.Table;import javax.persistence.Version;/** * entity * */@Entity@Table(name="t_address")public class Address {@Versionprivate Long version;//version@Id@GeneratedValueprivate Long id;//idpublic String province;//省份public String city;//城市public String postcode;//邮编public String detail;//详细地址//----------get,set可省------------public Long getVersion() {return version;}public void setVersion(Long version) {this.version = version;}public Long getId() {return id;}public void setId(Long id) {this.id = id;}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;}}@OneToOne(targetEntity=AddressEO.class)public AddressEO getAddress() {return address;}@OneToOne(fetch=FetchType.LAZY)public AddressEO getAddress() {return address;}@OneToOne(optional=false)@JoinColumn(name = "address_id",unique=true, nullable=false, updatable=false)public AddressEO getAddress() {return address;}@OneToOne@JoinColumn(name = "addr_id")public AddressEO getAddress() {return address;}@OneToOne@JoinColumn(name = "address_id",referencedColumnName="ref_id")public AddressEO getAddress() {return address;} 1 楼 sytcun 2011-11-06 超详细呀, 不错哈~