hibernate中继承关系配置大体上可以有三种不同的解决方案:
1.所有父子bean的字段位于同一个一表中;
2.父类字段位于一个表中,各子类独有的字段作为一个表;
3.各个类所有字段(包括父类中的字段)作为一个表;
下面主要以第一种为例:
现在父类BEAN:
public class LayerSite {
private Integer id;
private String name;
private String flag;
}
子类一:
public class OffSite extends LayerSite{
private Date offDate;
}
子类二:
public class WarnSite extends LayerSite{
private Date warnDate;
}
配置文件:
<class name="com.myproject.app.gis.model.LayerSite" table="layer_site" discriminator-value="1">
<id name="id" type="java.lang.Integer">
<column name="id" />
<generator class="native" />
</id>
<!-- 标识 断站 0, 告警 1 -->
<discriminator column="flag" type="java.lang.String" />
<property name="flag" type="java.lang.String" insert="false" update="false">
<column name="flag" />
</property>
<property name="name" type="java.lang.String">
<column name="name" not-null="false" />
</property>
<subclass name="com.myproject.app.gis.model.OffSite" discriminator-value="0">
<property name="offDate" type="timestamp">
<column name="off_date" not-null="true" />
</property>
</subclass>
<subclass name="com.myproject.app.gis.model.WarnSite" discriminator-value="1">
<property name="warnDate" type="timestamp">
<column name="warn_date" not-null="true" />
</property>
</subclass>
</class>