问题描述
父类:BaseLineDefine(基线)
子类
SBaseLineDefine (静态基线)
DBaseLineDefine(动态基线)无论是动态基线,还是静态基线,都会有一个 TolerateLine(容忍线)的集合 (Set<TolerateLine>)。我把这个集合放在了父类中,如下
class BaseLineDefine{
private String baselineid;
Set listTolerateLine = new HashSet();
}class SBaseLineDefine extends BaseLineDefine{
....其他属性
}class DBaseLineDefine extends BaseLineDefine{

.....其他属性}
我在配置hibernate的时候
(1) BaseLineDefine<class name="BaseLineDefine" table="c_baslinedefine">
<id name="baselineid" column="fc_baslineid">
<generator class="assigned"></generator>
</id>
<set name="listTolerateLine" inverse="true" cascade="all">
<key column="fc_baslineid"></key>
<one-to-many class="TolerateLine"/>
</set>
<joined-subclass name="DBaseLineDefine" table="c_d_basline">
<key column="fc_baslineid"></key>
<property name="baselineperiod" column="fc_baslineperiod" type="string"></property>
</joined-subclass>
<joined-subclass name="SBaseLineDefine" table="c_s_baslinedefine">
<key column="fc_baslineid"></key>
<property name="algorithm" column="fc_algorithm" type="string"></property>
</joined-subclass>

</class>(2) TolerateLine<class name="TolerateLine" table="c_tolerateline">
<id name="toleratelineid" column="fc_toleratelineid" type="string">
<generator class="assigned"></generator>
</id>
<property name="type" column="fi_type" type="int"></property>
<property name="value" column="fi_value" type="java.lang.Float"></property>
<many-to-one name="baseline" column="fc_baslineid"></many-to-one>
</class>
后台Dao中public void delSBaseLine(SBaseLineDefine sbd) {
Session session = this.getSessionFactory().openSession();
session.beginTransaction();
Set<TolerateLine> set =sbd.getListTolerateLine();
Iterator it  = set.iterator();
while(it.hasNext()){
TolerateLine t =(TolerateLine)it.next();
System.out.println(t.getValue()+"------------");
}
//session.delete(sbd);
session.getTransaction().commit();
this.releaseSession(session);

}
session.delete 时只删除了基线,然后获取TolerateLine的集合,发现为空,不知为什么,是我什么地方配置的不对?
子类的表和父类的表是通过主键baselineid关联的
BaseLineDefine 表
   baselineid      name
       1           line1  
SBaseLineDefine 表()
   baselineid      period .......其他列
       1             120