您的位置:首页 > 其它

hibernate继承映射

2016-05-21 00:00 148 查看
我的例子中父类都设为抽象类。一般类没有测试

---------------------------------普通继承映射----------------------------

每个子类映射一张表,父类没有表:只需要写子类的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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: