hibernate set里面如果有inverse="true",那么cascade="delete-orphan"似乎不起作用了。。。。
zk21 2005-11-07 11:30:24 <hibernate-mapping package="com.chinabig.model">
<class name="CompanyBase"
table="company_test" >
<set name="tradeClasses"
cascade="delete-orphan"
inverse="true"
access="org.hibernate.auction.persistence.DirectSetAccessor">
<key>
<column name="COMP_ID" not-null="true"/>
</key>
<one-to-many class="CompanyTrade"/>
</set>
</class>
===========================================
<class name="CompanyTrade"
table="AN_COMPANY_CLASS_TEST">
<many-to-one name="comp"
insert="false"
update="false"
not-null="true"
access="org.hibernate.auction.persistence.DirectSetAccessor"
column="COMP_ID"/>
</class>
</hibernate-mapping>
以上配置下,用下面的代码:
Company com = this.getCompany();
com.getTradeClasses().clear();
cod.makePersistent(com);
本以为能够删除所有集合里的CompanyTrade,
可是没有作用,最有只有是用以下方法:
CompanyTrade ct = (CompanyTrade)com.getTradeClasses().toArray()[0];
cod.makeTransient(ct);
但这样的做法显然不令人满意的,另外我也想弄清楚这个问题。。。想知道是不是inverse="true"的缘故,如果是的话,你们代码里也用后面这种方法解决的吗?
cascade="delete-orphan" Hibernate will delete any persistent entity
instance that has been removed (dereferenced) from the association (for
example, from a collection).
这是官方书上说的哦!