我现在有三表A,B,C
B表是中间表,A和C表分别对B进行1对多的映射
配置文件如下(拿关键的)
在A和C的映射文件都存在这样一段
<set name="sysRelRoleReses" inverse="true" lazy="false" cascade="all-delete-orphan">
<key>
<column name="SYS_RES_ROW_ID" precision="22" scale="0" not-null="true" />
</key>
<one-to-many class="com.zjhcsoft.biap.role.entity.SysRelRoleRes" />
</set>在B映射文件有这样一段
<many-to-one name="sysRole" class="com.zjhcsoft.biap.role.entity.A" fetch="select" lazy="false">
<column name="SYS_ROLE_ROW_ID" precision="22" scale="0" not-null="true" />
</many-to-one>
<many-to-one name="sysResourceBySysRowId" class="com.zjhcsoft.biap.resource.entity.C" fetch="select" lazy="false">
<column name="SYS_ROW_ID" precision="22" scale="0" not-null="true" />
</many-to-one>我现在在对A或者C进行删除操作
方法如下
ADao.deleteByKey(A.ID);
或者使用先remove再delete的方法实现都会提示
deleted object would be re-saved by cascade异常我想了半天没想出原因,最后发现是两边都对中间表进行一对多关联的时候才有这个问题,我把一边的映射文件中的SET注释掉后,就可以正常删除了,但是这样就对我造成困扰了,我两边都需要这样做,请问该怎么去处理~
B表是中间表,A和C表分别对B进行1对多的映射
配置文件如下(拿关键的)
在A和C的映射文件都存在这样一段
<set name="sysRelRoleReses" inverse="true" lazy="false" cascade="all-delete-orphan">
<key>
<column name="SYS_RES_ROW_ID" precision="22" scale="0" not-null="true" />
</key>
<one-to-many class="com.zjhcsoft.biap.role.entity.SysRelRoleRes" />
</set>在B映射文件有这样一段
<many-to-one name="sysRole" class="com.zjhcsoft.biap.role.entity.A" fetch="select" lazy="false">
<column name="SYS_ROLE_ROW_ID" precision="22" scale="0" not-null="true" />
</many-to-one>
<many-to-one name="sysResourceBySysRowId" class="com.zjhcsoft.biap.resource.entity.C" fetch="select" lazy="false">
<column name="SYS_ROW_ID" precision="22" scale="0" not-null="true" />
</many-to-one>我现在在对A或者C进行删除操作
方法如下
ADao.deleteByKey(A.ID);
或者使用先remove再delete的方法实现都会提示
deleted object would be re-saved by cascade异常我想了半天没想出原因,最后发现是两边都对中间表进行一对多关联的时候才有这个问题,我把一边的映射文件中的SET注释掉后,就可以正常删除了,但是这样就对我造成困扰了,我两边都需要这样做,请问该怎么去处理~
解决方案 »
- 求struts2+spring+ibatis整合所需jar有那些?
- SSH整合问题报异常 大虾来看看啊
- IllegalStateException是什么问题?
- java 时间限制
- 如何用java语言分析这个xml,将其中的省名保存到一个字符型数组中?
- 从含有中文的字符串中提取中文
- jsp标签能不能和struts标签结合呢?
- java.lang.NullPointerException
- 二维数组分组排序问题
- 我写了一个用EJB存取SQLSERVER数据库记录的EJB,发布的时候出现了以下错误,大伙帮忙给看看,我实在不懂了
- My Sql 编码问题
- org.apache.catalina.core.StandardContext start 错误
hibernate现在完全支持从一方删除数据,不过我们要设置如下属性:inverse="false" 将主主控权给一方,
casecade = all. 支持级联,能连续delete
要不你试下
再通过B.remove(a),来实现!