您的位置:首页 > 其它

hibernate使用注解的方式进行多对一关联

2015-08-07 21:09 519 查看
1 添加支持jap注解的包;

2 在持久化类中配置注解;

3 在配置中配置映射;

4 用 AnnotationConfigurration配置;

5 常用注解:

@Entity 表示持久化类;

@Id 主键

@GeneratedValue 主键自增

@ManyToOne(cascade=(CascadeType.ALL)) 所有操作进行级联

@@OneToMany(cascade=(CascadeType.ALL),mappedBy="classes") mappedBy 拥有该注解的类放弃控制权

6 双向关联通常和关联双方都加cascade及mappBy一起用;

双向多对一:

package com.tem.hib;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.ManyToOne;

@Entity
public class Student {
	@Id
	@GeneratedValue
	private Integer sid;
	private String sname;
	@ManyToOne(cascade=(CascadeType.ALL))
	private Classes classes;
	
	
	public Classes getClasses() {
		return classes;
	}
	public void setClasses(Classes classes) {
		this.classes = classes;
	}
	public Integer getSid() {
		return sid;
	}
	public void setSid(Integer sid) {
		this.sid = sid;
	}
	public String getSname() {
		return sname;
	}
	public void setSname(String sname) {
		this.sname = sname;
	}
	
	
}


package com.tem.hib;

import java.util.HashSet;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToMany;
@Entity
public class Classes {
	@Id
	@GeneratedValue
	private Integer cid;
	private String cname;
	@OneToMany(cascade=(CascadeType.ALL),mappedBy="classes")
	private Set<Student> students=new HashSet<Student>();
	
	
	public Set<Student> getStudents() {
		return students;
	}
	public void setStudents(Set<Student> students) {
		this.students = students;
	}
	public Integer getCid() {
		return cid;
	}
	public void setCid(Integer cid) {
		this.cid = cid;
	}
	public String getCname() {
		return cname;
	}
	public void setCname(String cname) {
		this.cname = cname;
	}
	
	
}


package com.tem.test;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.cfg.Configuration;

import com.tem.hib.Classes;
import com.tem.hib.Student;

public class Test {

	public static void main(String[] args) {
		Configuration cfg=new AnnotationConfiguration().configure();
//		SchemaExport schema=new SchemaExport(cfg);
//		schema.create(true, true);
		SessionFactory sf=cfg.buildSessionFactory();
		
		Session session=sf.openSession();
		session.beginTransaction();
		Student s=new Student();
		Classes c=new Classes();
		c.setCname("C3");
		s.setSname("a1");
		s.setClasses(c);
		c.getStudents().add(s);
		session.save(c);
		session.getTransaction().commit();
	}

}



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