您的位置:首页 > 其它

JPA--双向一对一

2013-12-29 16:23 381 查看
双向一对一没有固定的维护端和被维护端,看实际情况而定

在这例子中

Person 与 IDCard一一对应 ,在这里我把Person设定为维护端

Person.java

package com.olay.entity;

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;

@Entity
public class Person {
	private int id;
	private String name;
	private IDCard idcard;

	@Id
	@GeneratedValue
	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	@Column(length=10,nullable=false)
	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	@OneToOne(cascade=CascadeType.ALL,optional=false)
	@JoinColumn (name="idcard_id")   //定义外键    外键在关系维护端定义
	public IDCard getIdcard() {
		return idcard;
	}

	public void setIdcard(IDCard idcard) {
		this.idcard = idcard;
	}
	
	

}


IDCard.java

package com.olay.entity;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToOne;

@Entity
public class IDCard {
	private int id;
	private String cardno;
	private Person person;

	@Id @GeneratedValue
	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	@Column(length=18,nullable=false)
	public String getCardno() {
		return cardno;
	}

	public void setCardno(String cardno) {
		this.cardno = cardno;
	}

	@OneToOne(cascade={CascadeType.PERSIST,CascadeType.MERGE,CascadeType.REFRESH},fetch=FetchType.LAZY,mappedBy="idcard")
	public Person getPerson() {
		return person;
	}

	public void setPerson(Person person) {
		this.person = person;
	}
	
	

}


测试类

package com.olay.entity;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

import junit.framework.TestCase;

public class OneToOne extends TestCase {
	public void test(){
		EntityManagerFactory emf = Persistence.createEntityManagerFactory("olayjpa");
		EntityManager em = emf.createEntityManager();
		em.getTransaction().begin();
		
		IDCard idcard = new IDCard();
		idcard.setCardno("111233444444444432");
		
		Person person = new Person();
		
		person.setName("olay");
		person.setIdcard(idcard);
		
		em.persist(person);
		
		em.getTransaction().commit();
		em.close();
		emf.close();
	}

}


结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: