Hibernate 一对一关联映射

package com.entity;

import javax.persistence.Entity;
import javax.persistence.OneToOne;

@Entity
public class Husband extends BaseEntity {
	@OneToOne(mappedBy = "husband")
	private Wife wife;
	public Wife getWife() {
		return wife;
	}

	public void setWife(Wife wife) {
		this.wife = wife;
	}

	private String name;

	public String getName() {
		return name;
	}

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

}

husband.java

package com.entity;

import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;

@Entity
public class Wife extends BaseEntity {
	private String name;
	
	@ManyToOne
	@JoinColumn(name="husband_id",unique=true)
	private Husband husband;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Husband getHusband() {
		return husband;
	}
	public void setHusband(Husband husband) {
		this.husband = husband;
	}
	
}

 wife.java

 

package com;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import com.entity.Food;
import com.entity.Husband;
import com.entity.User;
import com.entity.Wife;
import com.entity.student.Classes;
import com.entity.student.Teacher;

public class Test1 {
	private Session s;
	private Transaction tran;
	@Before
	public void before(){
		s=HibernateUtils.getSession();
		tran=s.beginTransaction();
	}
	
	public void test(){
		
		User user=(User)s.get(User.class,7);
		//持久太
		//user.setUsername("xixixi");
		//修改后不用save直接提交也可保存
		tran.commit();
		s.clear();//使对象与session没有关系 , 脱离持久太
		
		//把游离态的user变成持久态
		tran=s.beginTransaction();
		s.update(user);
		user.setPassword("789");
		tran.commit();
		
		//将对象变成顺时太
		tran=s.beginTransaction();
		s.delete(user);
		tran.commit();
	}
	

	public void one2one(){
		Husband h=new Husband();
		Wife w=new Wife();
		//创建两个瞬时对象
		h.setName("xiaoming");
		w.setName("baby");
		w.setHusband(h);
		s.save(w);
		s.save(h);
		
	}
	@Test
	public void one2oneQuery(){
		Husband h=(Husband)s.get(Husband.class, 2);
		System.out.println(h.getName()+"-------------"+h.getWife().getName());
	}
	
	
	
	@After 
	public void after(){
		tran.commit(); 	
		HibernateUtils.closeSession(s);
	}
	
}

 test1.java

posted @ 2014-10-13 19:20  马赛克都挡不住  阅读(126)  评论(0编辑  收藏  举报