zoukankan      html  css  js  c++  java
  • 对象关系_many2many

    jdbc:

    package demo.test.many2many;
    
    import java.util.HashSet;
    import java.util.Set;
    
    public class Student {
        private int Stu_id;
        private String Stu_name;
        private Set<Teacher> teacher = new HashSet<>();
        public int getStu_id() {
            return Stu_id;
        }
        public void setStu_id(int stu_id) {
            Stu_id = stu_id;
        }
        public String getStu_name() {
            return Stu_name;
        }
        public void setStu_name(String stu_name) {
            Stu_name = stu_name;
        }
        public Set<Teacher> getTeacher() {
            return teacher;
        }
        public void setTeacher(Set<Teacher> teacher) {
            this.teacher = teacher;
        }
        public Student(int stu_id, String stu_name, Set<Teacher> teacher) {
            Stu_id = stu_id;
            Stu_name = stu_name;
            this.teacher = teacher;
        }
        public Student(String stu_name, Set<Teacher> teacher) {
            Stu_name = stu_name;
            this.teacher = teacher;
        }
        public Student(String stu_name) {
            Stu_name = stu_name;
        }
        @Override
        public String toString() {
            return "Student [Stu_id=" + Stu_id + ", Stu_name=" + Stu_name + "]";
        }
        
    }
    package demo.test.many2many;
    
    import java.util.HashSet;
    import java.util.Set;
    
    public class Teacher {
        private int tea_id;
        private String name;
        private Set<Student> student = new HashSet<>();
    
        public Teacher() {
        }
    
        public int getTea_id() {
            return tea_id;
        }
    
        public void setTea_id(int tea_id) {
            this.tea_id = tea_id;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public Set<Student> getStudent() {
            return student;
        }
    
        public void setStudent(Set<Student> student) {
            this.student = student;
        }
    
        public Teacher(int tea_id, String name, Set<Student> student) {
            this.tea_id = tea_id;
            this.name = name;
            this.student = student;
        }
        public Teacher(String name, Set<Student> student) {
            this.name = name;
            this.student = student;
        }
        public Teacher(String name) {
            this.name = name;
        }
    
        @Override
        public String toString() {
            return "Teacher [tea_id=" + tea_id + ", name=" + name + "]";
        }
        
    
    }

    .xml文件

    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
    <hibernate-mapping package="demo.test.many2many">
    <!-- 根据包名找类,根据类名加载对应的类 -->
        <class name="Student" table="s_student">
            <id name="Stu_id" column="stu_id">
                <generator class="native"/>
            </id>
            <property name="Stu_name" column="Stu_name"/>
            <!--
                t_tea_stu:中间表的表名
                当前对象对应的ID列名和中间表 
                设置中间表的那一列与当前表关联
            -->
            
            <set name="teacher" table="t_tea_stu">
                <key column="id_stu" /><!-- 设置对面的外键  -->
                <!-- class="对方的类名" column="" -->
                <many-to-many class="Teacher" column="id_tea"/>
            </set>
        
        
        
        </class>
    </hibernate-mapping>
    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
    <hibernate-mapping package="demo.test.many2many">
    <!-- 根据包名找类,根据类名加载对应的类 -->
        <class name="Teacher" table="t_teacher">
            <id name="tea_id" column="t_id">
                <generator class="native"/>
            </id>
            <property name="name" column="t_name"/>
            
                <!--
                     inverse:管理权
                    ERROR:Duplicate entry '1-2' for key 'PRIMARY'
                -->
            <set name="student" table="t_tea_stu" >
                <key column="id_tea"/> <!-- 设置对面的外键  -->
                <many-to-many class="Student" column="id_stu"/>
            </set>
        </class>
    </hibernate-mapping>

    test测试类:

    package demo.test.many2many;
    
    import org.hibernate.Session;
    import org.junit.Test;
    
    import demo.test.utiltool.UtilTool;
    
    public class Many2Many {
        //关联关系one2one;one2many;many2one;many2many
        @Test
        public void testsave(){
            Teacher tea1 = new Teacher("张老师");
            Teacher tea2 = new Teacher("刘老师");
            Student stu1 = new Student("王同学");
            Student stu2 = new Student("李同学");
            //将学生添加给老师
            tea1.getStudent().add(stu1);
            tea1.getStudent().add(stu2);
            tea2.getStudent().add(stu1);
            tea2.getStudent().add(stu2);
            
            Session session = UtilTool.getInstance().getSession();
            session.beginTransaction();
            
            session.save(stu1);
            session.save(stu2);
            session.save(tea1);
            session.save(tea2);
            session.getTransaction().commit();
            session.close();
            
            
        }
    }

    最后,记得将各.hbm.xml文件引入cfg.xml

  • 相关阅读:
    eclipse中在线添加TestNG插件步骤(需联网)
    [IOI2008] Type Printer 打印机
    P2765 魔术球问题
    [HNOI2004]敲砖块
    P3931 SAC E#1
    [WC2005]友好的生物
    P1357 花园
    [SDOI2016]征途
    [APIO2014]序列分割
    [HNOI2008]玩具装箱TOY
  • 原文地址:https://www.cnblogs.com/huike/p/6585553.html
Copyright © 2011-2022 走看看