一个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>