zoukankan      html  css  js  c++  java
  • Hibernate之关于多对多单向关联映射


    【Hibernate】之关于多对多单向关联映射


    老师和学生,最典型的多对多关联,

    Teacher和Student。所谓单向意思就是说。老师知道自己的教的是哪些学生而学生不知道是哪些老师教。

    也能够这么说,在查询的时候,通过老师能够级联查询出学生,可是通过学生不能够级联查询出老师。


    而多对多最麻烦的是怎么自己定义我们中间表的,表名和列名,这个是重要的!




    Annotations配置

    @Entity
    @Table(name="t_teacher")
    publicclass Teacher {
        private Integer id;
        private String name;
        private Set<Student> students=new HashSet<Student>();//set不同意反复,最适合数据库模型
        @Id
        @GeneratedValue
        public Integer getId() {
           returnid;
        }
        publicvoid setId(Integerid) {
           this.id = id;
        }
        @Column(name="t_name")
        public String getName() {
           returnname;
        }
        publicvoid setName(Stringname) {
           this.name = name;
        }
        @ManyToMany
        @JoinTable(name="t_s_two",//自己定义表名
               joinColumns={@JoinColumn(name="teacher_id")},//自己定义列名
               inverseJoinColumns={@JoinColumn(name="student_id")})//反转。和Teacher相应的那个表的列名,也是自己定义
        public Set<Student>getStudents() {
           returnstudents;
        }
        publicvoidsetStudents(Set<Student> students) {
           this.students = students;
        }
    }
    

    @Entity
    @Table(name="t_student")
    publicclass Student {
        private Integer id;
        private String name;
        private Integer age;
        @Id
        @GeneratedValue
        public Integer getId() {
           returnid;
        }
        publicvoid setId(Integerid) {
           this.id = id;
        }
        @Column(name="s_name")
        public String getName() {
           returnname;
        }
        publicvoid setName(Stringname) {
           this.name = name;
        }
        @Column(name="s_age")
        public Integer getAge() {
           returnage;
        }
        publicvoid setAge(Integerage) {
           this.age = age;
        }
    }

    XML配置


    publicclass Teacher {
        private Integer id;
        private String name;
        private Set<Student> students=newHashSet<Student>();//set不同意反复,最适合数据库模型
        public Integer getId() {
           returnid;
        }
        publicvoid setId(Integerid) {
           this.id = id;
        }
        public String getName() {
           returnname;
        }
        publicvoid setName(Stringname) {
           this.name = name;
        }
        public Set<Student>getStudents() {
           returnstudents;
        }
        publicvoidsetStudents(Set<Student> students) {
           this.students = students;
        }
    }

    publicclass Student {
        private Integer id;
        private String name;
        private Integer age;
        public Integer getId() {
           returnid;
        }
        publicvoid setId(Integerid) {
            this.id = id;
        }
        public String getName() {
           returnname;
        }
        publicvoid setName(Stringname) {
           this.name = name;
        }
        public Integer getAge() {
           returnage;
        }
        publicvoid setAge(Integerage) {
           this.age = age;
        }
    }

    <?

    xml version="1.0"?

    > <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="csg.hibernate.entity"> <class name="Teacher" table="t_teacher"> <id name="id"> <column name="id"/> <generator class="native" /> </id> <property name="name" /> <set name="students" table="t_s_two"><!—-自己定义表名--> <key column="teacher_id"/><!—自己定义列名--> <many-to-many class="csg.hibernate.entity.Student" column="student_id"/><!—自己定义列名--> </set> </class> </hibernate-mapping>


    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC 
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    <hibernate-mapping package="csg.hibernate.entity">
        <class name="Student" table="t_student">
           <id name="id">
               <column name="id"/>
               <generator class="native" />
           </id>
           <property name="name" />
           <property name="age" />
        </class>
    </hibernate-mapping>


    以上就是XML的many-to-many(单向)的配置方法,ok!






  • 相关阅读:
    播放m3u文件时不能时时更新的问题
    Oracle视图详解
    Oracle视图的作用与安全性
    Ext GridPanel 表头合并
    [AJAX] 001 AJAX核心操作
    [Java] 系统环境变量配置
    [AJAX] 002 AJAX异步验证
    判断文章/帖子操作权限
    让Tee 7.x版本和FastReport 3.x版本共存
    mysql基本语句
  • 原文地址:https://www.cnblogs.com/liguangsunls/p/6970211.html
Copyright © 2011-2022 走看看