您的位置:首页 > 其它

hibernate之 many to one /one to many

2015-10-15 15:32 260 查看
一个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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: