我使用一对一关系(数据库的两张表没有设置级联关系)。配置文件如下
Tstudent.hbm.xml
<hibernate-mapping>
<class name="com.wangwz.one2one.bean.Tstudent" table="TSTUDENT" schema="CNFOL">
<id name="sid" type="long">
<column name="SID" precision="6" scale="0" />
<generator class="assigned" />
</id>
<property name="sname" type="java.lang.String">
<column name="SNAME" length="10" />
</property>
<one-to-one name="address" class="com.wangwz.one2one.bean.Taddress" cascade="all"/>
</class>
</hibernate-mapping>Taddress.hbm.xml
<hibernate-mapping>
<class name="com.wangwz.one2one.bean.Taddress" table="TADDRESS" schema="CNFOL">
<id name="sid" type="long">
<column name="SID" precision="6" scale="0" />
<generator class="foreign">
<param name="property">student</param>
</generator>
</id>
<property name="address" type="java.lang.String">
<column name="ADDRESS" length="20" />
</property>
<one-to-one name="student" class="com.wangwz.one2one.bean.Tstudent" constrained="true" cascade="none"/>
</class>
</hibernate-mapping>我用load方法得到Tstudent对象后,再删除,是有起来级联删除的作用;
语句:session.delete(session.load(Tstudent.class,new Long(2)));成功
但用我hql删除就起不到级联删的作用了。这是为什么?
hql = "delete from Tstudent where sid=2";此句不能产生级联删除的作用
Tstudent.hbm.xml
<hibernate-mapping>
<class name="com.wangwz.one2one.bean.Tstudent" table="TSTUDENT" schema="CNFOL">
<id name="sid" type="long">
<column name="SID" precision="6" scale="0" />
<generator class="assigned" />
</id>
<property name="sname" type="java.lang.String">
<column name="SNAME" length="10" />
</property>
<one-to-one name="address" class="com.wangwz.one2one.bean.Taddress" cascade="all"/>
</class>
</hibernate-mapping>Taddress.hbm.xml
<hibernate-mapping>
<class name="com.wangwz.one2one.bean.Taddress" table="TADDRESS" schema="CNFOL">
<id name="sid" type="long">
<column name="SID" precision="6" scale="0" />
<generator class="foreign">
<param name="property">student</param>
</generator>
</id>
<property name="address" type="java.lang.String">
<column name="ADDRESS" length="20" />
</property>
<one-to-one name="student" class="com.wangwz.one2one.bean.Tstudent" constrained="true" cascade="none"/>
</class>
</hibernate-mapping>我用load方法得到Tstudent对象后,再删除,是有起来级联删除的作用;
语句:session.delete(session.load(Tstudent.class,new Long(2)));成功
但用我hql删除就起不到级联删的作用了。这是为什么?
hql = "delete from Tstudent where sid=2";此句不能产生级联删除的作用
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货