Hibernate继承映射策略之每棵类继承树一张表
本文由发表于7年前 | J2EE | 暂无评论 |  被围观 4,859 views+

创建一个User类作为父类,ExamAdmin和StudentInfo类继承该User类,在Hibernate中进行映射配置时,可以使用继承映射。每棵类继承树一张表既是User类及其子类对象相关数据存放在一张表中,使用一个标识区别不同的对象。

User类代码:
package com.exam.entity;
public class User {
	private String userEmail;
	private String userPasswd;
	private String userName;
	private String userSex;
	private String userPhoto;
	public String getUserEmail() {
		return userEmail;
	}
	public void setUserEmail(String userEmail) {
		this.userEmail = userEmail;
	}
	public String getUserPasswd() {
		return userPasswd;
	}
	public void setUserPasswd(String userPasswd) {
		this.userPasswd = userPasswd;
	}
	public String getUserName() {
		return userName;
	}
	public void setUserName(String userName) {
		this.userName = userName;
	}
	public String getUserSex() {
		return userSex;
	}
	public void setUserSex(String userSex) {
		this.userSex = userSex;
	}
	public String getUserPhoto() {
		return userPhoto;
	}
	public void setUserPhoto(String userPhoto) {
		this.userPhoto = userPhoto;
	}
}
ExamAdmin类代码:
package com.exam.entity;
public class ExamAdmin extends User {
	private SubjectType subjectType;
	private String adminLimits;
	public String getAdminLimits() {
		return adminLimits;
	}
	public void setAdminLimits(String adminLimits) {
		this.adminLimits = adminLimits;
	}
	public SubjectType getSubjectType() {
		return subjectType;
	}
	public void setSubjectType(SubjectType subjectType) {
		this.subjectType = subjectType;
	}
}
StudentInfo类代码:
package com.exam.entity;
import java.util.Date;
public class StudentInfo extends User {
	private String studentNo;
	private Date studentBirth;
	private String studentMajor;
	private int studentGrade;
	private int studentIntegration;	
	public String getStudentNo() {
		return studentNo;
	}
	public void setStudentNo(String studentNo) {
		this.studentNo = studentNo;
	}
	public Date getStudentBirth() {
		return studentBirth;
	}
	public void setStudentBirth(Date studentBirth) {
		this.studentBirth = studentBirth;
	}
	public String getStudentMajor() {
		return studentMajor;
	}
	public void setStudentMajor(String studentMajor) {
		this.studentMajor = studentMajor;
	}
	public int getStudentGrade() {
		return studentGrade;
	}
	public void setStudentGrade(int studentGrade) {
		this.studentGrade = studentGrade;
	}
	public int getStudentIntegration() {
		return studentIntegration;
	}
	public void setStudentIntegration(int studentIntegration) {
		this.studentIntegration = studentIntegration;
	}	
}
则可以按照以下配置实现每棵类继承树创建一张表:
<hibernate-mapping package="com.exam.entity">
	<class name="User" table="exam_user" lazy="false">
		<id name="userEmail" column="user_email"></id>
		<discriminator column="user_type" type="string"/>
		<property name="userPasswd" column="user_passwd"/>
		<property name="userName" column="user_name"/>
		<property name="userSex" column="user_sex"/>		
		<property name="userPhoto" column="user_photo"/>			
		<subclass name="StudentInfo" discriminator-value="S">
			<property name="studentNo" column="student_no"/>
			<property name="studentBirth" column="student_birth" type="date"/>
			<property name="studentMajor" column="student_major"/>
			<property name="studentGrade" column="student_grade"/>
			<property name="studentIntegration" column="student_integration"/>			
		</subclass>
		<subclass name="ExamAdmin" discriminator-value="A">
			<property name="adminLimits" column="admin_limits"/>
			<many-to-one name="subjectType" column="subject_type_id" cascade="all"/>	
		</subclass>
	</class>
</hibernate-mapping>

其中,<discriminator column="user_type" type="string"/>标签用于设置子类的标识,如discriminator-value="A",则表示该子类在表中相应的标识为A。Subclass标签用于映射子类。

除了文章中有特别说明,均为IT宅原创文章,转载请以链接形式注明出处。
本文链接:http://www.itzhai.com/hibernate-inheritance-mapping-strategies-meike-class-inheritance-tree-of-a-table.html
关键字: ,
arthinking Java技术交流群:280755654,入门群:428693174 more
分享到:
 
2011 5/25
如果您有更好的原创技术博文或者观点,欢迎投稿:admin@itzhai.com,或者关注订阅左侧浮动面板的微信号订阅IT宅itread)发送消息。
文章评论
    没有评论
给我留言

有人回复时邮件通知我
J2EE的相关文章
随机文章 本月热门 热评
1 微型计算机技术实用知识点编程应用题 2011/6/30
2 JavaMail介绍和常用的API 一个较完整的发送电子邮件函数 2011/10/7
3 Struts2保存文件到服务器指定目录 2011/6/5
4 【转】在危机的边缘上 马斯克如何看待失败? 2013/11/4
5 任何不以学习知识为目的的考试都是耍流氓-软件工程导论试题 2011/7/4
6 C++语法笔记 – 多态性 2011/9/3
友情推荐 更多
破博客 文官洗碗安天下,武将打怪定乾坤。多么美好的年代,思之令人泪落。
Mr.5's Life 白天是一名程序员,晚上就是个有抱负的探索者
行知-追寻技术之美 关注大数据,分布式系统
我爱编程 编程成长轨迹
Cynthia's Blog 学习笔记 知识总结 思考感悟
 
猜您喜欢
欢迎关注我的公众号 IT宅
关于IT宅 文章归档

IT宅中的文章除了标题注明转载或有特别说明的文章,均为IT宅的技术知识总结,学习笔记或随笔。如果喜欢,请使用文章下面提供的分享组件。转载请注明出处并加入文章的原链接。 感谢大家的支持。

联系我们:admin@itzhai.com

Theme by arthinking. Copyright © 2011-2015 IT宅.com 保留所有权利.