• Hibernate多对多关系


     版权声明:本文为博主原创文章,如需转载请标注转载地址。

     博客地址:http://www.cnblogs.com/caoyc/p/5598932.html 

    代码:

    Teacher.java

     1 package com.proc.pojo;
     2 
     3 import java.util.HashSet;
     4 import java.util.Set;
     5 
     6 public class Student {
     7     private Integer id;
     8     private String name;
     9     private Set<Teacher> teachers=new HashSet<Teacher>();
    10     public Student() {
    11     }
    12     public Student(String name) {
    13         this.name = name;
    14     }
    15     public Integer getId() {
    16         return id;
    17     }
    18     public void setId(Integer id) {
    19         this.id = id;
    20     }
    21     public String getName() {
    22         return name;
    23     }
    24     public void setName(String name) {
    25         this.name = name;
    26     }
    27     public Set<Teacher> getTeachers() {
    28         return teachers;
    29     }
    30     public void setTeachers(Set<Teacher> teachers) {
    31         this.teachers = teachers;
    32     }
    33     @Override
    34     public String toString() {
    35         return "Student [id=" + id + ", name=" + name + "]";
    36     }
    37     
    38 }

    Student.java

     1 package com.proc.pojo;
     2 
     3 import java.util.HashSet;
     4 import java.util.Set;
     5 
     6 public class Teacher {
     7     private Integer id;
     8     private String name;
     9     private Set<Student> students=new HashSet<Student>();
    10     public Teacher() {
    11     }
    12     public Teacher(String name) {
    13         super();
    14         this.name = name;
    15     }
    16     public Integer getId() {
    17         return id;
    18     }
    19     public void setId(Integer id) {
    20         this.id = id;
    21     }
    22     public String getName() {
    23         return name;
    24     }
    25     public void setName(String name) {
    26         this.name = name;
    27     }
    28     public Set<Student> getStudents() {
    29         return students;
    30     }
    31     public void setStudents(Set<Student> students) {
    32         this.students = students;
    33     }
    34     @Override
    35     public String toString() {
    36         return "Teacher [id=" + id + ", name=" + name + "]";
    37     }
    38     
    39 }

    Student.hbm.xml

     1 <?xml version="1.0" encoding="UTF-8" ?>
     2 <!DOCTYPE hibernate-mapping PUBLIC 
     3     "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
     4     "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
     5 <hibernate-mapping package="com.proc.pojo">
     6     <class name="Student" table="t_student">
     7         <id name="id" column="id" type="int">
     8             <generator class="native"></generator>
     9         </id>
    10         <property name="name" column="name" type="string" length="20"></property>
    11         <set name="teachers" table="t_student_teacher">
    12             <key column="studentId"></key>
    13             <many-to-many column="teacherId" class="Teacher"></many-to-many>
    14         </set>
    15     </class>
    16 </hibernate-mapping>

    Teacher.hbm.xml

     1 <?xml version="1.0" encoding="UTF-8" ?>
     2 <!DOCTYPE hibernate-mapping PUBLIC 
     3     "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
     4     "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
     5 <hibernate-mapping package="com.proc.pojo">
     6     <class name="Teacher" table="t_teacher">
     7         <id name="id" column="id" type="int">
     8             <generator class="native"></generator>
     9         </id>
    10         <property name="name" column="name" type="string" length="20"></property>
    11         <set name="students" table="t_student_teacher">
    12             <key column="teacherId"></key>
    13             <many-to-many column="studentId" class="Student"></many-to-many>
    14         </set>
    15     </class>
    16 </hibernate-mapping>

    测试代码:

     1 package com.proc.test;
     2 
     3 import java.util.Set;
     4 
     5 import org.hibernate.Session;
     6 import org.hibernate.SessionFactory;
     7 import org.hibernate.Transaction;
     8 import org.hibernate.cfg.Configuration;
     9 import org.junit.Test;
    10 
    11 
    12 
    13 import com.proc.pojo.Student;
    14 import com.proc.pojo.Teacher;
    15 
    16 public class TestManageToManage {
    17     private static SessionFactory factory=new Configuration()
    18     .configure()
    19     .addClass(Student.class)
    20     .addClass(Teacher.class)
    21     .buildSessionFactory();
    22     
    23     
    24     @Test
    25     public void set(){
    26     
    27     Session session=factory.openSession();
    28     Transaction tran=session.beginTransaction();
    29     
    30     Student s1=new Student("张同学");
    31     Student s2=new Student("王同学");
    32     
    33     Teacher t1=new Teacher("曹老师");
    34     Teacher t2=new Teacher("曾老师");
    35     
    36     s1.getTeachers().add(t1);
    37     s2.getTeachers().add(t1);
    38     s2.getTeachers().add(t2);
    39     
    40     session.save(s1);    
    41     session.save(s2);
    42     session.save(t1);
    43     session.save(t2);
    44     
    45     tran.commit();
    46     session.close();
    47     }
    48     
    49     @Test
    50     public void get(){
    51     
    52     Session session=factory.openSession();
    53     Transaction tran=session.beginTransaction();
    54     
    55     
    56     Teacher t=session.get(Teacher.class, 2);
    57     System.out.println(t);
    58     Set<Student> set=t.getStudents();
    59     
    60     System.out.println(set);
    61     System.out.println("=-------------------------");
    62     Student s=session.get(Student.class, 2);
    63     System.out.println(s);
    64     System.out.println(s.getTeachers());
    65     
    66     tran.commit();
    67     session.close();
    68     }
    69 }
  • 相关阅读:
    cs231n线性分类器作业 svm代码 softmax
    Canopy聚类算法
    python numpy
    thingsboard在windows下安装和使用
    用css布局的方法实现如果字符超过一定长度就显示成省略号
    sql2008以上行转列的方法
    sql 2005,2008开启bcp的方法嗯哈步骤
    关于数据库中的科学计数法的处理
    错误:The Controls collection cannot be modified because the control contains code blocks (i.e. ). .
    ORACLE连接字符串里每个参数的具体意思
  • 原文地址:https://www.cnblogs.com/caoyc/p/5598932.html
Copyright © 2020-2023  润新知