hibernate 一对多映射

package com.entity.onetomany;

import java.util.ArrayList;
import java.util.List;

import javax.persistence.Entity;
import javax.persistence.OneToMany;

import com.entity.BaseEntity;
@Entity
public class Team extends BaseEntity{
	private String name;
	@OneToMany(mappedBy="team")
	//被Member类的team对象维护即Member.team
	private List<Member> members;
	
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public List<Member> getMembers() {
		return members;
	}
	public void setMembers(List<Member> members) {
		this.members = members;
	}

}

team.java

package com.entity.onetomany;

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

import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.NamedQuery;

import com.entity.BaseEntity;

@Entity
@NamedQuery(name = "aa", query = "select m from Member m where team_id=:tid")
public class Member extends BaseEntity {
	private String name;
	private int no;


	@ManyToOne(cascade=CascadeType.PERSIST)
	//级联保存  保存member的时候自动保存team
	@JoinColumn(name="team_id")
	//外键team_id
	//member为多的一方 所以由member来维护
	private Team team;
	
	
	
	

	public int getNo() {
		return no;
	}

	public void setNo(int no) {
		this.no = no;
	}

	public Team getTeam() {
		return team;
	}

	public void setTeam(Team team) {
		this.team = team;
	}

	public String getName() {
		return name;
	}

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


member.java

 

package com;

import java.util.List;
import java.util.Map;

import javax.persistence.Entity;

import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.annotations.NamedQuery;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
import org.hibernate.transform.Transformers;
import org.jboss.logging.annotations.Transform.TransformType;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import com.entity.onetomany.Member;
import com.entity.onetomany.Team;

public class TestOneToMany {
	private Session s;
	private Transaction tran;
	@Before
	public void before(){
		s=HibernateUtils.getSession();
		tran=s.beginTransaction();
	}
	
	public void one2many(){
		Team team=new Team();
		Team team1=new Team();
		team.setName("lakers");
		team1.setName("thunder");
		Member member1=new Member();
		member1.setName("kobe");
		member1.setTeam(team);//建立关系
		Member member2=new Member();
		member2.setName("nash");
		member2.setTeam(team);//建立关系
		Member member3=new Member();
		member3.setName("boozer");
		member3.setTeam(team);//建立关系
		Member member4=new Member();
		member4.setName("westbrook");
		member4.setTeam(team1);//建立关系
		Member member5=new Member();
		member5.setName("durant");
		member5.setTeam(team1);//建立关系
		Member member6=new Member();
		member6.setName("ibaka");
		member6.setTeam(team1);//建立关系
		s.persist(member1);
		s.persist(member2);
		s.persist(member3);
		s.persist(member4);
		s.persist(member5);
		s.persist(member6);
	}
                public void one2manyquery(){
    		Team team= (Team)s.get(Team.class, 1);
		//获得team对象
		for(Member m:team.getMembers()){
			System.out.println(m.getName());
		}
	}
	@After 
	public void after(){
		tran.commit(); 	
		HibernateUtils.closeSession(s);
	}
}
                        

 testonetomany.java

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