Hibernate继承映射之一_用一张表映射

这次给大家发的是hibernate的继承映射,继承映射的实例有很多:例如dog、cat都是animal的子类

这里用的是文章Article、主题Topic和回复Reply给大家做讲解。


主题和回复都是属于文章的子类,本文是讲解了怎么用一张表来映射这三个类,并且包括了映射的调试。


实体类:

Atricle.java

package i_hbm_extends;

import java.util.Date;

public class Article {
	private Integer id;
	private String title;
	private String context;
	private Date postTime;
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getTitle() {
		return title;
	}
	public void setTitle(String title) {
		this.title = title;
	}
	public String getContext() {
		return context;
	}
	public void setContext(String context) {
		this.context = context;
	}
	public Date getPostTime() {
		return postTime;
	}
	public void setPostTime(Date postTime) {
		this.postTime = postTime;
	}
}



Reply.java

package i_hbm_extends;

public class Reply extends Article{
	private int floor; // 楼层

	public int getFloor() {
		return floor;
	}

	public void setFloor(int floor) {
		this.floor = floor;
	}
	
}



Topic.java

package i_hbm_extends;

public class Topic extends Article{
	private int type; // 精华、置顶...

	public int getType() {
		return type;
	}

	public void setType(int type) {
		this.type = type;
	}
}


映射文件:

Article.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">
<!-- This mapping demonstrates -->
<!-- 告诉hibernate需要找哪个表 -->
<hibernate-mapping package="i_hbm_extends">
	
	<!-- discriminator-value:用于鉴别是哪个类的值,表示值就是这个类,如果不写,默认为类的全限定名 -->
	<class name="Article" table="t_article" discriminator-value="Article">
		<id name="id">
			<generator class="native"></generator>
		</id>
		
		<!-- 指定一个鉴别器 -->
		<discriminator type="string" column="class_"></discriminator>
		
		<property name="title" />
		<property name="context" type="text" length="20000"/>
		<property name="postTime" type="timestamp"/>
		
		<!-- 
			子类:Topic,每一段里面,每一个子类只写自己特有的信息
			name:指的是子类的类型名称
		-->
		<subclass name="Topic" discriminator-value="Topic">
			<property name="type"></property>
		</subclass>
		
		
		<!-- 
			子类:Reply,每一段里面,每一个子类只写自己特有的信息
		-->
		<subclass name="Reply" discriminator-value="Reply">
			<property name="floor"></property>
		</subclass>
		
	</class>
</hibernate-mapping>



  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值