如何使用Hibernate JPA进行一对一映射

2025-03-11 05:15:49
推荐回答(1个)
回答1:

我们如何使用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") 表示外键引用列。