两种针对继承的HBM文件编写方法
2007-02-28 13:47
597 查看
首先,有三个实体对象User,Student, Teacher
其中三者共同的属性是name,password,fullname,均定义在User中,Student和Teacher继承User
如果要在hibernate配置文件中定义上面的关系,有两种方法
(1)使用<union-subclass>
使用这种方式,三个表的字段名称必须完全相同(name,password,fullname)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<class table="userinfo" name="cm.hxex.exam.model.User">
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<id name="id" column="ID">
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<generator class="uuid.hex"/>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
</id>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<property name="name" column="NAME"/>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<property name="password" column="PASSWORD"/>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<property name="fullname" column="FULLNAME"/>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<union-subclass table="teacher" name="cn.hxex.exam.mode.Teacher">
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<many-to-one column="class_id" cascade="save-update" name="classes"/>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
</union-subclass>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<union-subclass table="student" name="cn.hxex.exam.mode.Student">
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<set cascade="all" lazy="true" table="TEACHER_CLASS" name="classes">
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<key column="TEACHER_ID"/>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<many-to-many class="cn.hxex.exam.model.Classes" column="CLASS_ID"/>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
</set>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
</union-subclass>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
</class>
(2)使用单独的<class>
可以解决字段名不一样的问题,但在每个子类中都要进行相应的属性定义,造成配置重复
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<class table="USERINFO" name="cn.hxex.exam.model.User">
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<id name="id" column="ID">
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<generator class="uuid.hex"/>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
</id>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<property name="name" column="NAME"/>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<property name="password" column="PASSWORD"/>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<property name="fullname" column="FULLNAME"/>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
</class>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<class table="STUDENT" name="cn.hxex.exam.model.Student">
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<id name="id" column="ID">
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<generator class="uuid.hex"/>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
</id>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<many-to-one column="CLASS_ID" cascade="save-update" name="classes"/>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<property name="name" column="NAME"/>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<property name="password" column="PASSWORD"/>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<property name="fullname" column="FULLNAME"/>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
</class>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<class table="TEACHER" name="cn.hxex.exam.model.Teacher">
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<id name="id" column="ID">
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<generator class="uuid.hex"/>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
</id>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<set inverse="true" name="papers">
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<key column="TEACHER_ID"/>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<one-to-many class="cn.hxex.exam.model.TestPaper"/>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
</set>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<set cascade="all" lazy="true" table="TEACHER_CLASS" name="classes">
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<key column="TEACHER_ID"/>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<many-to-many class="cn.hxex.exam.model.Classes" column="CLASS_ID"/>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
</set>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<property name="name" column="NAME"/>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<property name="password" column="PASSWORD"/>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<property name="fullname" column="FULLNAME"/>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
</class>
其中三者共同的属性是name,password,fullname,均定义在User中,Student和Teacher继承User
如果要在hibernate配置文件中定义上面的关系,有两种方法
(1)使用<union-subclass>
使用这种方式,三个表的字段名称必须完全相同(name,password,fullname)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<class table="userinfo" name="cm.hxex.exam.model.User">
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<id name="id" column="ID">
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<generator class="uuid.hex"/>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
</id>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<property name="name" column="NAME"/>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<property name="password" column="PASSWORD"/>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<property name="fullname" column="FULLNAME"/>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<union-subclass table="teacher" name="cn.hxex.exam.mode.Teacher">
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<many-to-one column="class_id" cascade="save-update" name="classes"/>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
</union-subclass>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<union-subclass table="student" name="cn.hxex.exam.mode.Student">
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<set cascade="all" lazy="true" table="TEACHER_CLASS" name="classes">
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<key column="TEACHER_ID"/>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<many-to-many class="cn.hxex.exam.model.Classes" column="CLASS_ID"/>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
</set>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
</union-subclass>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
</class>
(2)使用单独的<class>
可以解决字段名不一样的问题,但在每个子类中都要进行相应的属性定义,造成配置重复
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<class table="USERINFO" name="cn.hxex.exam.model.User">
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<id name="id" column="ID">
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<generator class="uuid.hex"/>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
</id>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<property name="name" column="NAME"/>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<property name="password" column="PASSWORD"/>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<property name="fullname" column="FULLNAME"/>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
</class>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<class table="STUDENT" name="cn.hxex.exam.model.Student">
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<id name="id" column="ID">
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<generator class="uuid.hex"/>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
</id>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<many-to-one column="CLASS_ID" cascade="save-update" name="classes"/>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<property name="name" column="NAME"/>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<property name="password" column="PASSWORD"/>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<property name="fullname" column="FULLNAME"/>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
</class>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<class table="TEACHER" name="cn.hxex.exam.model.Teacher">
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<id name="id" column="ID">
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<generator class="uuid.hex"/>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
</id>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<set inverse="true" name="papers">
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<key column="TEACHER_ID"/>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<one-to-many class="cn.hxex.exam.model.TestPaper"/>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
</set>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<set cascade="all" lazy="true" table="TEACHER_CLASS" name="classes">
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<key column="TEACHER_ID"/>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<many-to-many class="cn.hxex.exam.model.Classes" column="CLASS_ID"/>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
</set>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<property name="name" column="NAME"/>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<property name="password" column="PASSWORD"/>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<property name="fullname" column="FULLNAME"/>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
</class>
相关文章推荐
- 黑马程序员_ADO.Net(配置文件的两种写法与使用方法,手动编写SqlHelper类)
- 编写针对IE的JS代码两种编写方法
- 编写针对IE的JS代码两种编写方法
- 针对不同浏览器获取到css文件里相关属性的两种方法
- java读取文件的两种方法:java.io和java.lang.ClassLoader
- Java读取本地文件的两种方法及其区别
- 用C语言编写程序求一个1!+2!+3!+4!...(两种方法)
- 打开本地文件的两种方法
- Oracle导出表(即DMP文件)的两种方法
- Linux下运行.sh文件的两种方法
- vba判断文件是否存在的两种方法
- hibernate表继承,hbm文件配置
- 注解的力量 -----Spring 2.5 JPA hibernate 使用方法的点滴整理(一):消除hibernate中<mapping resouce 的xxxx. hbm.xml文件
- MyBatis两种执行XXXMapper.xml配置文件中SQL语句的方法
- Linux安装MySQL的两种方法{linux系统mysql安装之前需要先检查是否已经安装,把已经有的库文件卸载掉,否则会出现覆盖错误}
- eclipse打开当前文件所在文件夹的两种方法
- C#读写txt文件的两种方法介绍
- Eclipse将引用了第三方jar包的Java项目打包成jar文件的两种方法
- JSP隐含对象response实现文件下载的两种方法
- Java实现文件上传的两种方法(uploadify和Spring)