zoukankan      html  css  js  c++  java
  • hibernate之关于使用连接表实现多对一关联映射


    【Hibernate】之关于使用连接表实现多对一关联映射


    在我们项目使用中採用中间表最多的一般就是多对一,或者是多对多,当然一对一使用中间表也是能够的,可是这样的几率通常少之又少!所以这里重点介绍多对一和一对多的採用中间表进行关联映射!


    依旧採用Group和Person来描写叙述这个逻辑!


    Annotations配置

    @Entity
    @Table(name="t_group")
    publicclass Group {
        private Integer id;
        private String name;
        @Id
        @GeneratedValue
        public Integer getId() {
           returnid;
        }
        publicvoid setId(Integer id) {
           this.id = id;
        }
        @Column(name="g_name")
        public String getName() {
           returnname;
        }
        publicvoid setName(String name) {
           this.name = name;
        }
    }

    @Entity
    @Table(name="p_person")
    publicclass Person {
        private Integer id;
        private String name;
        private Integer age;
        private Group group;
        @ManyToOne
        //以下是配置中间表的核心
        @JoinTable(name="g_p",joinColumns={@JoinColumn(name="p_id")},
               inverseJoinColumns={@JoinColumn(name="g_id")})
        public Group getGroup() {
           returngroup;
        }
        publicvoid setGroup(Group group) {
           this.group = group;
        }
        @Id
        @GeneratedValue
        public Integer getId() {
           returnid;
        }
        publicvoid setId(Integer id) {
           this.id = id;
        }
        @Column(name="p_name")
        public String getName() {
           returnname;
        }
        publicvoid setName(String name) {
           this.name = name;
        }
        @Column(name="p_age")
        public Integer getAge() {
           returnage;
        }
        publicvoid setAge(Integer age) {
           this.age = age;
        }
    }


    XML配置


    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC 
        "-//Hibernate/HibernateMapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    <hibernate-mapping package="csg.hibernate.entity">
        <class name="Person" table="t_person">
           <id name="id">
               <column name="id"/>
               <generator class="native" />
           </id>
           <property name="name" />
           <property name="age" />
           <join table="t_p" optional="true">
               <key column="p_id"></key>
               <many-to-one name="group" column="g_id" class="Group" unique="true"/>
           </join>
        </class>
    </hibernate-mapping>

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


    写这篇文章,我特意查询了一下网上的文章,发现大家都是採用XML配置的,所以我这里也写了Annotations配置,由于JPA中的Annotations使用起来远比XML要方便!OK?







    XML配置


  • 相关阅读:
    面试官问你如何解决web高并发这样回答就好了
    react-native页面间传递数据的几种方式
    图片上传知识点梳理
    使用Vue CLI 3将基于element-ui二次封装的组件发布到npm
    OpenCV学习笔记09--通过cvPtr2D或指针算法绘制图形
    [code segments] OpenCV3.0 SVM with C++ interface
    LINUX设备驱动程序笔记(一)设备驱动程序简单介绍
    redis 简单安装使用
    Linux常见压缩命令
    计算机网络13--网络应用的体系结构
  • 原文地址:https://www.cnblogs.com/yxwkf/p/4551002.html
Copyright © 2011-2022 走看看