Hibernate 多对多映射

王朝学院·作者佚名  2016-05-29
窄屏简体版  字體: 小  |  中  |  大  |  超大  

Hibernate 多对多映射package com.entity.manytomany;import java.util.List;import javax.persistence.Entity;import javax.persistence.JoinColumn;import javax.persistence.JoinTable;import javax.persistence.ManyToMany;import com.entity.BaseEntity;@Entitypublic class Student extends BaseEntity{PRivate String name;@ManyToMany//学生是不稳定的一方 所以由学生来维护@JoinTable(name="student_course",joinColumns=@JoinColumn(name="s_id"),inverseJoinColumns=@JoinColumn(name="c_id"))//关联表的表名//关联当前表的主键//关联对方表的主键 ()内的name即关联表内的字段名 可以自己自由设计private List<Course> courses;public String getName() {return name;}public void setName(String name) {this.name = name;}public List<Course> getCourses() {return courses;}public void setCourses(List<Course> courses) {this.courses = courses;}}

student.java

package com.entity.manytomany;import java.util.List;import javax.persistence.Entity;import javax.persistence.ManyToMany;import com.entity.BaseEntity;@Entitypublic class Course extends BaseEntity{private String name;@ManyToMany(mappedBy ="courses")//被学生类的courses对象维护private List<Student> students;public String getName() {return name;}public void setName(String name) {this.name = name;}public List<Student> getStudents() {return students;}public void setStudents(List<Student> students) {this.students = students;}}

Course.java

package com;import java.util.ArrayList;import java.util.List;import org.hibernate.session;import org.hibernate.Transaction;import org.junit.After;import org.junit.Before;import org.junit.Test;import com.entity.manytomany.Course;import com.entity.manytomany.Student;public class TestManyToMany {private Session s;private Transaction tran;@Beforepublic void before(){s=HibernateUtils.getSession();tran=s.beginTransaction();}public void manytomany(){Course c1=new Course();Course c2=new Course();Course c3=new Course();Student stu1=new Student();Student stu2=new Student();Student stu3=new Student();stu1.setName("zhangsan");stu2.setName("lisi");stu3.setName("wangwu");c1.setName("java");c2.setName("Oracle");c3.setName("html");//新建对象List<Course> courses =new ArrayList<Course>();//建立了一个课程集合List<Course> courses1 =new ArrayList<Course>();courses1.add(c2);courses1.add(c3);courses.add(c1);courses.add(c2);courses.add(c3);//向集合中插入要选的课程stu1.setCourses(courses);stu2.setCourses(courses);stu3.setCourses(courses1);//建立关联 将课程集合set到学生的课程属性中 即学生选择了集合中所有的课程s.save(c1);s.save(c2);s.save(c3);s.save(stu1);s.save(stu2);s.save(stu3);}@Testpublic void manytomanyquery(){Course c=(Course)s.get(Course.class, 1);for(Student s:c.getStudents()){System.out.println(c.getName()+"-------选这门课的学生"+s.getName());}Course c1=(Course)s.get(Course.class, 2);for(Student s:c1.getStudents()){System.out.println(c1.getName()+"-------选这门课的学生"+s.getName());}Course c2=(Course)s.get(Course.class, 3);for(Student s:c2.getStudents()){System.out.println(c1.getName()+"-------选这门课的学生"+s.getName());}}@Afterpublic void after(){tran.commit();s.close();}}

testmanytomany.java

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航