• 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;
        }
    }
  • 相关阅读:
    Ubuntu 开机启动是出现 grub rescue 解决办法
    OpenvSwitch Port Mirror in OpenStack Neutron
    Protobuf 在Ubuntu 14上的编译与使用
    Linux screen 常用命令
    OpenStack/devstack with Neutron on Ubuntu 14 (1)
    osprofiler在openstack Cinder里的使用
    基于SSH协议的端口转发
    HA 技术简介
    Socket Receive数据一次性接收不全的问题
    【转】本文对C#虚函数virtual进行详解。
  • 原文地址:https://www.cnblogs.com/hyl-home/p/7576978.html
Copyright © 2020-2023  润新知