zoukankan      html  css  js  c++  java
  • hibernate之 many to one /one to many

    一个classroom 对应多个学生.这个是one to many

    多个学生对应一个classroom 这个是many to one

    表classroom

    | classroom | CREATE TABLE `classroom` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `name` varchar(20) DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 |

    表 student

    | student | CREATE TABLE `student` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `name` varchar(20) DEFAULT NULL,
      `classroom` int(11) DEFAULT NULL,
      PRIMARY KEY (`id`),
      KEY `FK_ID` (`classroom`),
      CONSTRAINT `FK_ID` FOREIGN KEY (`classroom`) REFERENCES `classroom` (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 |

    classroom 的主键是student 的外键.

    用hibernate 自动生成如下的类和hbm.xml 映射文件

    classroom.java

    package com.skyline.test;
    // Generated 2015-10-15 15:15:05 by Hibernate Tools 4.3.1
    
    import java.util.HashSet;
    import java.util.Set;
    
    /**
     * Classroom generated by hbm2java
     */
    public class Classroom implements java.io.Serializable {
    
        private Integer id;
        private String name;
        private Set students = new HashSet(0); //表中没有
    
       ......getter/setter
    }

    student.java

    package com.skyline.sms.caster.test;
    // Generated 2015-10-15 15:15:05 by Hibernate Tools 4.3.1
    
    /**
     * Student generated by hbm2java
     */
    public class Student implements java.io.Serializable {
    
        private Integer id;
        private Classroom classroom;
        private String name;
    
    ............getter/setter
    
    }

    classroom.hbm.xml

    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
    <!-- Generated 2015-10-15 15:15:06 by Hibernate Tools 4.3.1 -->
    <hibernate-mapping>
        <class name="Classroom" table="classroom" catalog="smsdb" optimistic-lock="version">
            <id name="id" type="java.lang.Integer">
                <column name="id" />
                <generator class="identity" />
            </id>
            <property name="name" type="string">
                <column name="name" length="20" />
            </property>
            <set name="students" table="student" inverse="true" lazy="true" fetch="select">
                <key>  <!--key 表示在student 表有如下外键-->
                    <column name="classroom" />
                </key>
                <one-to-many class="Student" />
            </set>
        </class>
    </hibernate-mapping>

    student.hbm.xml

    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
    <!-- Generated 2015-10-15 15:15:06 by Hibernate Tools 4.3.1 -->
    <hibernate-mapping>
        <class name="Student" table="student" catalog="smsdb" optimistic-lock="version">
            <id name="id" type="java.lang.Integer">
                <column name="id" />
                <generator class="identity" />
            </id>
             <property name="name" type="string">
                <column name="name" length="20" />
            </property>
            <many-to-one name="classroom" class="Classroom" fetch="select">
                <column name="classroom" />
            </many-to-one>
        </class>
    </hibernate-mapping>
  • 相关阅读:
    C# Thread.Sleep 卡死的问题解决方法
    GridView多行显示 TableAdapter没有Update 问题
    python zlib 压缩 解压 文件夹
    17、【Python】mac安装多个版本的python
    18、【常见算法】二叉树的遍历
    29、【C++基础】内存泄露
    17、【常见算法】topN问题
    16、【常见算法】查找斐波那契数列的第N项
    15、【常见算法】实现sqrt函数
    14、【常见算法】数组分组排序
  • 原文地址:https://www.cnblogs.com/predisw/p/4882562.html
Copyright © 2011-2022 走看看