Hibernate中OneToOne主键作为联系关系外键的配置

Hibernate中OneToOne主键作为关联外键的配置

 

/**
 * @文件名称 Person.java
 * @包名称 com.gxzyinfo.jpa.model
 * @基本描述 TODO
 * @作者 祝靖俊
 * @时间 2012-4-17 上午11:05:19
 *
 */
package com.gxzyinfo.jpa.model;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToOne;
import javax.persistence.PrimaryKeyJoinColumn;
import javax.persistence.Table;

/** 
 * @类名 Person 
 * @描述 TODO
 * @作者 祝靖俊
 * @时间 2012-4-17 上午11:05:20 
 * @since 1.0.0
 *  
 */
@Entity
@Table(name="GX_EX_PERSON")
public class Person {
	
	@Id
	@GeneratedValue(strategy=GenerationType.AUTO)
	private Integer personId;
	
	private String personName;
	
	@OneToOne(fetch=FetchType.LAZY, cascade=CascadeType.ALL, optional=false)
        @PrimaryKeyJoinColumn
	private IdCard card;

	/**
	 * @see com.gxzyinfo.jpa.model.Person#personId
	 * @return 获得属性personId的值
	 */
	public Integer getPersonId() {
		return personId;
	}

	/**
	 * @see com.gxzyinfo.jpa.model.Person#personId
	 * @param 给personId属性赋新值
	 */
	public void setPersonId(Integer personId) {
		this.personId = personId;
	}

	/**
	 * @see com.gxzyinfo.jpa.model.Person#personName
	 * @return 获得属性personName的值
	 */
	public String getPersonName() {
		return personName;
	}

	/**
	 * @see com.gxzyinfo.jpa.model.Person#personName
	 * @param 给personName属性赋新值
	 */
	public void setPersonName(String personName) {
		this.personName = personName;
	}

	/**
	 * @see com.gxzyinfo.jpa.model.Person#card
	 * @return 获得属性card的值
	 */
	public IdCard getCard() {
		return card;
	}

	/**
	 * @see com.gxzyinfo.jpa.model.Person#card
	 * @param 给card属性赋新值
	 */
	public void setCard(IdCard card) {
		this.card = card;
	}
}
/**
 * @文件名称 IdCard.java
 * @包名称 com.gxzyinfo.jpa.model
 * @基本描述 TODO
 * @作者 祝靖俊
 * @时间 2012-4-17 上午11:06:32
 *
 */
package com.gxzyinfo.jpa.model;

import java.io.Serializable;

/** 
 * @类名 IdCard 
 * @描述 TODO
 * @作者 祝靖俊
 * @时间 2012-4-17 上午11:06:32 
 * @since 1.0.0
 *  
 */
@Entity
@Table(name="GX_EX_IDCARD")
public class IdCard implements Serializable{
	
	private static final long serialVersionUID = 7215377425325331688L;

	@Id
	private Integer cardId;
	
	@MapsId
    @OneToOne(optional = true, cascade = CascadeType.ALL, fetch=FetchType.LAZY)
	@PrimaryKeyJoinColumn
	@JoinColumn(name="cardId")
	private Person person;
	
	private String cardNo;

	/**
	 * @see com.gxzyinfo.jpa.model.IdCard#cardId
	 * @return 获得属性cardId的值
	 */
	public Integer getCardId() {
		return cardId;
	}

	/**
	 * @see com.gxzyinfo.jpa.model.IdCard#cardId
	 * @param 给cardId属性赋新值
	 */
	public void setCardId(Integer cardId) {
		this.cardId = cardId;
	}

	/**
	 * @see com.gxzyinfo.jpa.model.IdCard#person
	 * @return 获得属性person的值
	 */
	public Person getPerson() {
		return person;
	}

	/**
	 * @see com.gxzyinfo.jpa.model.IdCard#person
	 * @param 给person属性赋新值
	 */
	public void setPerson(Person person) {
		this.person = person;
	}

	/**
	 * @see com.gxzyinfo.jpa.model.IdCard#cardNo
	 * @return 获得属性cardNo的值
	 */
	public String getCardNo() {
		return cardNo;
	}

	/**
	 * @see com.gxzyinfo.jpa.model.IdCard#cardNo
	 * @param 给cardNo属性赋新值
	 */
	public void setCardNo(String cardNo) {
		this.cardNo = cardNo;
	}
}