我的例子中父类都设为抽象类。一般类没有测试
---------------------------------普通继承映射----------------------------
每个子类映射一张表,父类没有表:只需要写子类的hibernate的映射配置文件就行。
注意:通过父类查询数据库时 必须写父类的全名(类名+包名)
<class name="类名" table="表名">
<!-- 简单继承映射: 父类属性直接写 -->
<id name="主键">
<generator class="主键生成策略"></generator>
</id>
<property name="属性名(包括父类的属性名+子类的属性名)"></property>
</class>
--------------------------------不简单继承映射-----------------------------------------
所有子类映射到一张纸:(使用情况:子类多,并且每个子类属性极少)需要区分每个子类
数据库多一个字段来标记/区分子类(不推荐)
<class name="父类类名">
<!--注意:一定要指定鉴别器字段,否则报错!
鉴别器字段:作用是在数据库中区别每一个子类的信息, 就是一个列
discriminator-value="鉴别器字段名"
指定鉴别器字段,即type_字段的值
如果不指定,默认为当前子类的全名-->
<subclasss name="子类类名">
<property>属性
</subclass>
</class>
每个类都映射一个表(包括子类+父类)
<class name="父类名" table="父类表名">
<id name="主键">
<generator class="生成策略"></generator>
</id>
<property name="父类属性"></property>
<!--key 指定子类表的外键字段-->
<joined-subclass name="子类名" table="子类表">
<key column="外键"></key>
<property name="子类属性"></property>
</joined-subclass>
</class>
每个子类映射一个表,而且只有一个映射配置文件(父类没有表)
<class name="父类类名" abstract="true">
<!-- 如果用union-subclass节点,主键生成策略不能为自增长! -->
<id name="id">
<generator class="uuid"></generator>
</id>
<property name="name"></property>
<!--
union-subclass
table 指定为表名, 表的主键即为id列
-->
<union-subclass name="子类名" table="子类映射表名">
<property name="子类属性"></property>
</union-subclass>
</class>

1312

被折叠的 条评论
为什么被折叠?



