在上次 基础上 完成 一对一的双向关联映射
此处 还是以人 (person)和身份证号 (idcard)为例说明
1,person的实体
package com.dhc.domain;
import java.io.Serializable;
import javax.persistence.Column;
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;
/**
* 个人实体 person与idcard 是一对一的关系 通过person可以查看idcard
* */
@Entity
@Table(name="person", schema="test")
public class Person implements Serializable{
private static final long serialVersionUID = 6722039031958379583L;
private int id;
private String name;
private int age;
private IdCard idCard;
/**
* 映射主键
* @GeneratedValue 表示主键生成策略 此处AUTO表示自增长
* */
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
/**
* 映射表的字段 name
* unique 表示是否唯一约束
* nullable 表示是否为空
* */
@Column(name="name", unique=true, nullable=false)
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
/**
* 映射表的字段 age
* unique 表示是否唯一约束
* nullable 表示是否为空
* */
@Column(name="age", unique=false, nullable=false)
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
/**
* 映射一对一关系
* targetEntity 表示默认关联的实体类型,默认为当前标注的实体类
* optional 表示关联的该实体是否能够存在null值
* JoninColumn 映射关联表的字段
* */
@OneToOne(targetEntity=IdCard.class, optional=false)
@JoinColumn(name="idCard_id", nullable=false, unique=true)
public IdCard getIdCard() {
return idCard;
}
public void setIdCard(IdCard idCard) {
this.idCard = idCard;
}
}
2 . IdCard 实体
package com.dhc.domain;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToOne;
import javax.persistence.Table;
/**
* 身份证号
* idcard 与person 是一对一的关系 通过idcard 可以查看person
* */
@Entity
@Table(name="idcard", schema="test")
public class IdCard implements Serializable{
private static final long serialVersionUID = 8836522181675957407L;
private int id;
private String num;
private Person person;
/**
* 映射主键
* @GeneratedValue 表示主键生成策略 此处AUTO表示自增长
* */
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
/**
* 映射表的字段 num
* */
@Column(name="num")
public String getNum() {
return num;
}
public void setNum(String num) {
this.num = num;
}
/**
* 一对一 关联映射
* mappedBy属性来指明所映射的实体关系,它的值为所关联实体中该属性的名称
* 即此处的idCard 对应Person 类中的字段idCard
* */
@OneToOne(mappedBy="idCard")
public Person getPerson() {
return person;
}
public void setPerson(Person person) {
this.person = person;
}
}
同时 在 配置文件中 添加idcard 实体的相关映射
测试 OK