package com.hibernate.ano;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import org.hibernate.annotations.GenericGenerator;
/**
* @ClassName: Husband.java
*
* @Description: 丈夫
*
* @author GERRARD
*
* @date 2015年1月26日下午1:39:43
*
*/
@Entity
@Table(name = "husband")
public class Husband implements java.io.Serializable {
/**
* 序列化
*/
private static final long serialVersionUID = -3565511189578786963L;
/**
* 主键ID
*/
private String pid;
/**
* 姓名
*/
private String husbandName;
/**
* 妻子
*/
private Wife wife;
public Husband() {
}
public Husband(String pid, String husbandName, Wife wife) {
this.pid = pid;
this.husbandName = husbandName;
this.wife = wife;
}
/**
* 自动32位UUID
* @return
*/
@Id
@Column(name = "pid", unique = true, nullable = false, length = 32)
@GeneratedValue(generator = "generator")
@GenericGenerator(name = "generator", strategy = "uuid")
public String getPid() {
return pid;
}
public void setPid(String pid) {
this.pid = pid;
}
@Column(name = "husband_name", length = 64)
public String getHusbandName() {
return husbandName;
}
public void setHusbandName(String husbandName) {
this.husbandName = husbandName;
}
/**
* FetchType.LAZY:懒加载,加载一个实体时,定义懒加载的属性不会马上从数据库中加载。
*
* FetchType.EAGER:急加载,加载一个实体时,定义急加载的属性会立即从数据库中加载。
*
* mappedBy = "husband" 映射实体Wife中的husband属性(属性名要等于这个名)
*/
@OneToOne(fetch = FetchType.LAZY, mappedBy = "husband")
public Wife getWife() {
return wife;
}
public void setWife(Wife wife) {
this.wife = wife;
}
}
package com.hibernate.ano;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToOne;
import javax.persistence.PrimaryKeyJoinColumn;
import javax.persistence.Table;
import org.hibernate.annotations.GenericGenerator;
import org.hibernate.annotations.Parameter;
/**
* @ClassName: Wife.java
*
* @Description: 妻子
*
* @author GERRARD
*
* @date 2015年1月26日下午1:39:30
*
*/
@Entity
@Table(name = "wife")
public class Wife implements java.io.Serializable {
/**
* 序列化
*/
private static final long serialVersionUID = 8177241922775766920L;
/**
* 主键ID(共享丈夫)
*/
private String pid;
/**
* 姓名
*/
private String wifeName;
/**
* 丈夫
*/
private Husband husband;
public Wife() {
}
public Wife(String pid, String wifeName, Husband husband) {
this.pid = pid;
this.wifeName = wifeName;
this.husband = husband;
}
/**
* 共享丈夫主键ID
*
* @return
*/
@GenericGenerator(name = "generator", strategy = "foreign", parameters = @Parameter(name = "property", value = "husband"))
@Id
@GeneratedValue(generator = "generator")
@Column(name = "pid", unique = true, nullable = false, length = 32)
public String getPid() {
return pid;
}
public void setPid(String pid) {
this.pid = pid;
}
@Column(name = "wife_name", length = 64)
public String getWifeName() {
return wifeName;
}
public void setWifeName(String wifeName) {
this.wifeName = wifeName;
}
/**
* PrimaryKeyJoinColumn:使用主键作为关联字段
*
* @return
*/
@OneToOne(fetch = FetchType.LAZY)
@PrimaryKeyJoinColumn
public Husband getHusband() {
return husband;
}
public void setHusband(Husband husband) {
this.husband = husband;
}
}