继承映射
3种方式,继承关系映射到数据库的表中
1.继承关系层次一个表(Table per class hierarchy),这种方式使用一个表存储同一个继
承层次的所有类,使用额外的字段来表示所记录的是哪一个子类的数据。
2.每一个具体类一个表(Table per concrete class),这种方式让继承关系中的每个具体类
对应一个表
3.每个子类一个表(Table per subclass),这种方式让继承关系中的父类和每一个子类分别
对应一个表,父类与子类对应的表通过外键产生关联
继承关系层次一个表
public class Delivery implements java.io.Serializable{
private Integer id;
private String recipient;
private String phone;
private String address;
private String postcode;
}
public class PostDelivery extends Delivery{
private String parcelNumber;
}
public class ExpressDelivery extends Delivery{
private String expressCompany;
private String expressNumber;
}
并且生成getter和setter方法
在delivery.hbm.xml修改
在id 下面加入
<!--以delivery_type区分-->
<discriminator column="delivery_type"></discriminator>
<!--子类PostDelivery特有的属性-->
<subclass name="com.rbh.examples.PostDelivery" discriminator-value="Post">
<property name="paracelNumber" type="java.lang.String">
<column name="PARACEL_NUMBER" length="30" />
</property>
</subclass>
<!--子类ExpressDelivery特有的属性-->
<subclass name="com.rbh.examples.ExpressDelivery" discriminator-
value="Express">
<property name="expressNumber" type="java.lang.String">
<column name="EXPRESS_NUMBER" length="30" />
</property>
<property name="expressCompany" type="java.lang.String">
<column name="EXPRESS_COMPANY" length="30" />
</property>
</subclass>
每个具体类一个表
public abstract class Delivery implements java.io.Serializable
{
private Integer id;
private String recipient;
private String phone;
private String address;
private String postcode;
}
<class name="com.rbh.examples.Delivery" table="DELIVERY" schema="SCOTT"
abstract="true"> 为抽象类
<union-subclass name="com.rbh.examples.PostDelivery" table="post_delivery">
<property name="parcelNumber" type="java.lang.String">
<column name="PARCEL_NUMBER" length="30" />
</property>
</union-subclass>
<union-subclass name="com.rbh.examples.ExpressDelivery"
table="express_delivery">
<property name="expressNumber" type="java.lang.String">
<column name="EXPRESS_NUMBER" length="30" />
</property>
<property name="expressCompany" type="java.lang.String">
<column name="EXPRESS_COMPANY" length="30" />
</property>
</union-subclass>
每个子类一个表
public class Delivery implements java.io.Serializable{
private Integer id;
private String recipient;
private String phone;
private String address;
private String postcode;
}
public class PostDelivery extends Delivery{
private String parcelNumber;
}
public class ExpressDelivery extends Delivery{
private String expressCompany;
private String expressNumber;
}
<joined-subclass name="com.rbh.examples.PostDelivery" table="post_delivery">
<key column="id" foreign-key="id"></key>
<property name="parcelNumber" type="java.lang.String">
<column name="PARCEL_NUMBER" length="30" />
</property>
</joined-subclass>
<joined-subclass name="com.rbh.examples.ExpressDelivery"
table="express_delivery">
<key column="id" foreign-key="id"></key>
<property name="expressNumber" type="java.lang.String">
<column name="EXPRESS_NUMBER" length="30" />
</property>
<property name="expressCompany" type="java.lang.String">
<column name="EXPRESS_COMPANY" length="30" />
</property>
</joined-subclass>
分享到:
相关推荐
Hibernate继承映射+C3P0代码
博文链接:https://shaqiang32.iteye.com/blog/201319
Hibernate案例与专题-继承映射策略。详细介绍了Hibernate继承映射策略。
针对hibernate的继承映射部分做了几个测试的例子,更加直观的阐述了继承映射的几种方式以及对应的表结构方式,文件被分割成3部分 http://download.csdn.net/source/259075 http://download.csdn.net/source/259072 ...
用Hibernate映射继承关系
简单的使用了hibernate的继承,用idea搭建,适合刚刚开始学习hibernate的初学者参考
NULL 博文链接:https://wintys.iteye.com/blog/426031
博文链接:https://shaqiang32.iteye.com/blog/201321
NULL 博文链接:https://quicker.iteye.com/blog/658432
NULL 博文链接:https://cdxs2.iteye.com/blog/1934884
NULL 博文链接:https://quicker.iteye.com/blog/658411
博文链接:https://shaqiang32.iteye.com/blog/201320