zoukankan      html  css  js  c++  java
  • Hibernate映射关系配置(四)

    多对多单向:

    Bean:

    public class Student implements Serializable {
        
        private int id ;
        
        private String name ;
        
        private Set<Teacher> teachers ;
            ....
    }
    public class Teacher implements Serializable{
    
        private int id ;
        
        private String  name ;
        ....
    }

    xml:

    Student.hbm.xml:
    <class name = "Student">
            <!-- id是来配置主键 
                 name是类中的哪个属性和主键映射
                 generator:表示主键的生成策略
            -->
            <id name = "id">
                <generator class="native" />
            </id>
            <!-- property是用来把类中的属性和表的字段做一一对应 -->
            <property name="name" />
            
            
            <set name="teachers" table="t_s">
                <!-- key 会在指定的表中新添加列,外键-->
                <key column="sid" /> 
                <many-to-many class="Teacher" column="tid" />
            </set>
            
        </class>
    Teacher.hbm.xml:
    <class name = "Teacher">
            <!-- id是来配置主键 
                 name是类中的哪个属性和主键映射
                 generator:表示主键的生成策略
            -->
            <id name = "id">
                <generator class="native" />
            </id>
            <property name="name" />
        </class>

    annotation:

    @Entity
    public class Student implements Serializable {
            @Id @GeneratedValue
        public int getId() {
            return id;
        }
            /**
         * joinColumns 是指定第三张表中的哪个字段引用当前类对应的表的主键
         * inverseJoinColumns 是指定第三张表中的哪个字段引用关联的另一张表的主键
         * @return
         */
        @ManyToMany
        @JoinTable(name="ts",joinColumns={
                @JoinColumn(name="sid")
        },inverseJoinColumns={
                @JoinColumn(name="tid")
        })
        public Set<Teacher> getTeachers() {
            return teachers;
        }
    }
    
    @Entity
    public class Teacher implements Serializable{
            @Id @GeneratedValue
        public int getId() {
            return id;
        }
    }

    多对多双向:

    Bean:

    public class Student implements Serializable {
        
        private int id ;
        
        private String name ;
        
        private Set<Teacher> teachers ;
            ....
    }
    public class Teacher implements Serializable{
    
        private int id ;
        
        private String  name ;
        
        private Set<Student> stus ;
            ....
    }

    Xml:

    Student.hbm.xml:
            <class name = "Student">
            <!-- id是来配置主键 
                 name是类中的哪个属性和主键映射
                 generator:表示主键的生成策略
            -->
            <id name = "id">
                <generator class="native" />
            </id>
            <!-- property是用来把类中的属性和表的字段做一一对应 -->
            <property name="name" />
            
            
            <set name="teachers" table="t_s">
                <!-- key 会在指定的表中新添加列,外键-->
                <key column="sid" /> 
                <many-to-many class="Teacher" column="tid" />
            </set>
            
        </class>
    
    Teacher.hbm.xml:
    <class name = "Teacher">
            <!-- id是来配置主键 
                 name是类中的哪个属性和主键映射
                 generator:表示主键的生成策略
            -->
            <id name = "id">
                <generator class="native" />
            </id>
            <property name="name" />
            
            <set name="stus" table="t_s" cascade="all">
                <key column="tid" />
                <many-to-many column="sid" class="Student" />
            </set>
        </class>

    annotation:

    @Entity
    public class Student implements Serializable {
            @Id @GeneratedValue
        public int getId() {
            return id;
        }
            /**
         * joinColumns 是指定第三张表中的哪个字段引用当前类对应的表的主键
         * inverseJoinColumns 是指定第三张表中的哪个字段引用关联的另一张表的主键
         * @return
         */
        @ManyToMany
        @JoinTable(name="ts",joinColumns={
                @JoinColumn(name="sid")
        },inverseJoinColumns={
                @JoinColumn(name="tid")
        })
        public Set<Teacher> getTeachers() {
            return teachers;
        }
    }
    
    @Entity
    public class Teacher implements Serializable{
            @Id @GeneratedValue
        public int getId() {
            return id;
        }
            @ManyToMany(mappedBy="teachers")
        public Set<Student> getStus() {
            return stus;
        }
    }
  • 相关阅读:
    在Tomcat运行JSP的一个问题
    英语时态的性趣学法
    温哥华蝉联全球最宜居城市榜首 Vancouver still world's most liveable city: survey
    【转】解压缩版tomcat配置及使用(环境变量设置及测试,一个简单的web应用实例)
    五个常用MySQL图形化管理工具
    windows下将解压缩版的tomcat设置为自动运行的系统服务
    Java初学者Java的学习路径(全集)
    [ZT]森田学习体会
    7种错误冲奶粉法 宝宝的健康会打折
    数据库系统原理
  • 原文地址:https://www.cnblogs.com/hyl-home/p/7576978.html
Copyright © 2011-2022 走看看