hibernate级联删除,我总是出错
bigtype.hbm.xml
<?xml version="1.0" encoding="gb2312"?>
<!DOCTYPE hibernate-mapping
PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="org.appfuse.model.Bigtype" table="tb_bigtype">
<id name="ID" column="ID" type="int">
<generator class="identity"/>
</id>
<property name="TypeName" column="TypeName"/>
<set name="smalltype" lazy="true" cascade="all">
<key column="bigId"/>
<one-to-many class="org.appfuse.model.Smalltype"/>
</set>
</class>
</hibernate-mapping>
smalltype.hbm.xml
<?xml version="1.0" encoding="gb2312"?>
<!DOCTYPE hibernate-mapping
PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="org.appfuse.model.Smalltype" table="tb_smalltype">
<id name="ID" column="ID" type="int">
<generator class="identity"/>
</id>
<property name="smalltypename" column="smalltypename"/>
<many-to-one name="bigtype" column="bigId" class="org.appfuse.model.Bigtype" cascade="none" lazy="false"/>
</class>
</hibernate-mapping>
我的删除函数是
public Bigtype getBigtype(int id)
{
Bigtype bigtype=(Bigtype)getHibernateTemplate().get(Bigtype.class,new Integer(id));
return bigtype;
}
public void removesmalltype(int id)
{
Bigtype bigtype=getBigtype(id);
removesmalltype1(bigtype);
getHibernateTemplate().delete(bigtype);
}
private void removesmalltype1(Bigtype bigtype)
{
List list=getHibernateTemplate().find("select s from Smalltype s where s.bigtype.ID="+bigtype.getID());
for(int i=0; i<list.size(); i++)
{
Smalltype smalltype=(Smalltype)list.get(i);
getHibernateTemplate().delete(smalltype);
}
}
removesmalltype(id)想从这个类,先获取大类对象,再删除小类对象。可实际小类根本删不掉,removesmalltype(id)中的id是大类别号。请大家帮我看看