• hibernate一对多关系配置


    一、     表信息

      公司表

    cId

    cName

    cAdress

    Null

    Null

    Null

                表t_company

      员工表 

    sId

    sName

    sAge

    cId

    Null

    Null

    Null

    Nulls

                表t_staff

      公司-员工:一对多关系,一个公司对应多个员工。外键设在多的一方。

     

    二、       实体类

     

    Company

    package dao;
    
    import java.util.HashSet;
    import java.util.Set;
    
    public class Company {
        private Integer cId;
        private String cName;
        private String cAdress;
        private Set<Staff> setStaff = new HashSet<Staff>();
        public Integer getcId() {
            return cId;
        }
        public Set<Staff> getSetStaff() {
            return setStaff;
        }
        public void setSetStaff(Set<Staff> setStaff) {
            this.setStaff = setStaff;
        }
        public void setcId(Integer cId) {
            this.cId = cId;
        }
        public String getcName() {
            return cName;
        }
        public void setcName(String cName) {
            this.cName = cName;
        }
        public String getcAdress() {
            return cAdress;
        }
        public void setcAdress(String cAdress) {
            this.cAdress = cAdress;
        }
    }
    View Code

    Staff

    package dao;
    
    public class Staff {
        private Integer sId;
        private String sName;
        private Integer sAge;
        private Company company;
        public Company getCompany() {
            return company;
        }
        public void setCompany(Company company) {
            this.company = company;
        }
        public Integer getsId() {
            return sId;
        }
        public void setsId(Integer sId) {
            this.sId = sId;
        }
        public String getsName() {
            return sName;
        }
        public void setsName(String sName) {
            this.sName = sName;
        }
        public Integer getsAge() {
            return sAge;
        }
        public void setsAge(Integer sAge) {
            this.sAge = sAge;
        }
    }
    View Code

    Hibernate要求使用集合表示多的数据,用Set集合表示

     

    三、       配置文件

    映射配置文件:

    Company.hbm.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE hibernate-mapping PUBLIC 
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
     <hibernate-mapping>
         <class name="dao.Company" table="t_company">
         <id name="cId" column="cId"><generator class="native"></generator></id>
         <property name="cName" column="cName"></property>
         <property name="cAdress" column="cAdress"></property>
         <set name="setStaff">
         <key column="cId"></key>
         <one-to-many class="dao.Staff"/>
         </set>
         </class>
     </hibernate-mapping>
    View Code

    Staff.hbml.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE hibernate-mapping PUBLIC 
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
    <hibernate-mapping>
        <class name="dao.Staff" table="t_staff">
        <id name="sId" column="sId"><generator class="native"></generator></id>
        <property name="sName" column="sName"></property>
        <property name="sAge" column="sAge"></property>
        <many-to-one name="company" class="dao.Company" column="cId"></many-to-one>
        </class>
    </hibernate-mapping>
    View Code

    核心配置文件:

    Hibernate.cfg.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
    <hibernate-configuration>
        <session-factory>
            <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
            <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate?useUnicode=true&amp;characterEncoding=utf-8</property>
            <property name="hibernate.connection.username">root</property>
            <property name="hibernate.connection.password">123</property>
            <property name="hibernate.show_sql">true</property>
            <property name="hibernate.format_sql">true</property>
            <property name="hibernate.hbm2ddl.auto">update</property>
            <mapping resource="dao/Company.hbm.xml"/>
            <mapping resource="dao/Staff.hbm.xml"/>
        </session-factory>
    </hibernate-configuration>
    View Code

    在一对多的一方配置<set>

    在多对一的乙方配置<many-to-one>

  • 相关阅读:
    文本比较算法Ⅴ——回顾贴,对前面几篇文章的回顾与质疑
    键盘监控的实现Ⅱ——容易产生误解的CallNextHookEx函数
    利用WPF建立自适应窗口大小布局的WinForm窗口
    计算机中的颜色XIII——颜色转换的快速计算公式
    键盘监控的实现Ⅲ——按键消息的修改(映射)
    计算机中的颜色XI——从色相值到纯色的快速计算(新的公式)
    Dot Net中InputLanguage对象的使用限制
    计算机中的颜色XII——快速计算纯色的色相值(新的公式)
    关于房产中介网的设计随想
    java笔记:熟练掌握线程技术基础篇之解决资源共享的问题(中)前篇
  • 原文地址:https://www.cnblogs.com/lolybj/p/6263761.html
Copyright © 2020-2023  润新知