hibernate的级联操作异常

    xiaoxiao2021-12-14  21

    在做 Spring   +   hibernate 级联删除操作的时候,遇到了Exception :deleted object would be re-saved by cascade (remove deleted object from associations):于是浏览了大量的博客:

    发现:与这个问题相关的问题域有

    一、spring的配置文件中对hibernate的事务配置

    <!-- 2、配置事务属性  -->     <tx:advice id="txAdvice" transaction-manager="transactionManager">         <tx:attributes>             <tx:method name="delete*" propagation="REQUIRED" />             <tx:method name="update*" propagation="REQUIRED" />             <tx:method name="save*" propagation="REQUIRED" />             <tx:method name="*" read-only="false"/>             <!-- <tx:method name="get" read-only="true"/>             <tx:method name="*" propagation="REQUIRED"/> -->         </tx:attributes>     </tx:advice>

    注意方法的权限:

    二、级联操作时遇到的表间的约束关系。

    比如:

    1、失败例子:

            User user=new User();         user.setId(1);         User user2=userDAO.queryUser(user);         userDAO.deleteUser(user2);                 //这里直接删除了<many-to-one>中的many一方,是错误的。         System.out.println("删除---------");         return "success";

    2、成功例子:

            User user=new User();         user.setId(1);         User user2=userDAO.queryUser(user);         Role role=user2.getRole();         role.getUsers().remove(user2);             //先移除两个对象之间的关系,在删除,成功。         userDAO.deleteUser(user2);         System.out.println("删除---------");         return "success";

    三、详细的例子可以参考其他博客:

    1、       http://blog.163.com/weizonghua_2006/blog/static/13106065620108113618639/

    2、       http://www.blogjava.net/crazycy/archive/2006/06/24/54939.html

    转载请注明原文地址: https://ju.6miu.com/read-971367.html

    最新回复(0)