一对多的配置思想是:在一的一方用一个Set集合来装多的对象。跟上一篇多对一的思想是不同的,多对一的思想是:在多的一方设置一的对象作为属性。
还是以学生和班级为例。这里因为是要配置一对多,所以班级类的文件改成如下:
package com.ye.models; import java.util.HashSet; import java.util.Set; /** * 类功能简单描述:这个是单向的多对一映射<BR/> * 类名:Class<BR/> * 作者yenairong<BR/> * 时间:2014年11月17日 下午1:00:17<BR/> * @version 1.0.0 <BR/> */ public class Class { private int classId; private String className; //在这里设置学生类用一个Set集合来装,就完成了一对多配置。new一个的 //原因是防止应用程序取值时,出现空指向异常 private Set<Student> stuSet = new HashSet<Student>(); public int getClassId() { return classId; } public void setClassId(int classId) { this.classId = classId; } public String getClassName() { return className; } public void setClassName(String className) { this.className = className; } public Set<Student> getStuSet() { return stuSet; } public void setStuSet(Set<Student> stuSet) { this.stuSet = stuSet; } }
在学生类那里是这样子配置的:
package com.ye.models; public class Student { private int stuId; private String studName; public int getStuId() { return stuId; } public void setStuId(int stuId) { this.stuId = stuId; } public String getStudName() { return studName; } public void setStudName(String studName) { this.studName = studName; } }
接下来配置班级Class和学生Student类的的映射文件:
班级类的映射文件是如下配置的(因为为有直接one - to - many-配置的标签,所以得改用一个Set标签来实现):
班级类的映射文件如下的形式:
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <!-- Generated 2014-11-16 18:45:07 by Hibernate Tools 3.4.0.CR1 --> <hibernate-mapping> <class name="com.ye.models.Class" table="c_table"> <id name="classId" type="int"> <column name="class_id" /> <generator class="native"> </generator> </id> <property name="className" type="java.lang.String"> <column name="class_name" /> </property> <!-- set里面name对应于本实体类里面的Set集合的实例名。inverse和lazy暂时不用设。它们默认是inverse="false" lazy="true" --> <set name="stuSet"> <key column="stu_id"></key><!-- 这里指定引用的外键名跟表里面的一样,key --> <one-to-many class="com.ye.models" ></one-to-many> </set> </class> </hibernate-mapping>
学生类的映射文件是这样配置的:
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="com.ye.models.Student" table="student"> <id name="stuId" type="int"> <column name="stuid" /> <generator class="native" /> </id> <property name="studName" type="java.lang.String"> <column name="STUDNAME" /> </property> </class> </hibernate-mapping>
最后是配置hibernat.cfg.xml这个文件:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <property name="hibernate.connection.password">123456</property> <property name="hibernate.connection.url">jdbc:mysql:///test</property> <property name="hibernate.connection.username">root</property> <!-- 数据库方言 --> <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> <!-- 是否显示sql语句 --> <property name="show_sql">true</property> <!-- 是否自动生成表结构,它有四个属性,一般常用的就是update --> <property name="hbm2ddl.auto">update</property> <!-- 映射文件 --> <mapping resource="com/ye/models/Class.hbm.xml"/> <mapping resource="com/ye/models/Student.hbm.xml"/> </session-factory> </hibernate-configuration>
附件的内容是直接可以运行的代码
相关推荐
一个hibernate一对多关联实例,包括关联save、关联delete、关联select、关联update。
Hibernate 一对多关联映射的测试,主要使用部门与员工的级联关系进行添加测试.
博文链接:https://unya.iteye.com/blog/89816
博文链接:https://llying.iteye.com/blog/220809
主要介绍了hibernate一对多(多对一)双向关联映射的用法
NULL 博文链接:https://profound-accumulation.iteye.com/blog/2243079
Hibernate映射一对多关联关系
主要介绍了hibernate一对多关联映射学习小结,需要的朋友可以参考下
博文链接:https://llying.iteye.com/blog/220810
此demo是用mysq数据库来完成的,里面有数据库表,只要生成一下就可以用了。很好很简单的
Hibernate 一对多外键单向关联 Hibernate 一对多连接表单向关联 Hibernate 多对一外键单向关联 Hibernate 多对一连接表单向关联 Hibernate 多对多单向关联 Hibernate 一对一外键双向关联 Hibernate 一对一主键双向...
Hibernate一对多关联双向关联代码实现分享,大家参考使用吧
hibernate双向一对多关联映射(注解版)
这里包含了hibernate多对一单向关联关系实现源码,希望对你有用。
Hibernate双向一对一关联映射(注解版)
Hibernate一对多双向自身关联demo代码
Hibernate一对一,一对多,多对多实例