报错如下:deleted object would be re-saved by cascade (remove deleted object from associations): [com.eps.bean.TbNewsclass#10]; nested exception is org.hibernate.ObjectDeletedException: deleted object would be re-saved by cascade (remove deleted object from associations): [com.eps.bean.TbNewsclass#10]  表结构如下,A表的列a是B表的外键,要删除一个A实体,必须删除所有和这个实体有关的B表内容。具体代码如下:List list = tbnewsService.list("from TbNews where newcalssid="+tbnewsclassForm.getTbnewsclass().getNewcalssid());
  System.out.println("-=-=-=-=-=-=-=-=-=-=-="+list.size());
  for (int i = 0; i < list.size(); i++) {
   TbNews t = (TbNews)list.get(i);
   tbnewsService.delete(t);
  }TbNewsclass tbNewsclass = tbnewsclassService.find(TbNewsclass.class, tbnewsclassForm.getTbnewsclass().getNewcalssid());
  tbnewsclassService.delete(tbNewsclass);数据库结果如下:A表的内容没有删除,但是B表的相关内容只剩下一条,但是最后一条删除不了。
以上问题出现的另一种形式的错误:nested exception is org.hibernate.exception.SQLGrammarException: could not delete:

解决方案 »

  1.   

    我知道,问题是曾今我一直都是这么做的,而且屡试不爽,而这次却出问题了,代码我看过,没有问题,我想知道为什么会报这个错nested exception is org.hibernate.exception.SQLGrammarException: could not delete:
      

  2.   

    那就是你配置的问题http://topic.csdn.net/u/20090327/11/fc4b758d-84e2-4234-9c8a-f3d3a9ff3847.html
    看看这个
      

  3.   

    是啊,我是设置了级联删除,各种属性试了一个变,然后系统使劲报这个错:
    nested exception is org.hibernate.exception.SQLGrammarException: could not delete无论我关联数据有几百条,结果都是删的剩下一条数据,然后不让删了!!!!
      

  4.   

    <hibernate-mapping>
        <class name="com.eps.bean.TbNewsclass" table="tb_newsclass">
            <id name="newcalssid" type="java.lang.Integer">
                <column name="newcalssid" />
                <generator class="native" />
            </id>
            <property name="newclassname" type="java.lang.String">
                <column name="newclassname" length="50" />
            </property>
            <bag name="tbNewses" inverse="true" cascade="delete">
                <key>
                    <column name="newcalssid" />
                </key>
                <one-to-many class="com.eps.bean.TbNews" />
            </bag>
        </class>
    </hibernate-mapping>删除相关代码:
    List list = tbnewsService.list("from TbNews where newcalssid="+tbnewsclassForm.getTbnewsclass().getNewcalssid());
    // for (int i = 0; i < list.size(); i++) {
    // TbNews t = (TbNews)list.get(i);
    // tbnewsService.delete(t);
    // }
    TbNewsclass tbNewsclass = tbnewsclassService.find(TbNewsclass.class, tbnewsclassForm.getTbnewsclass().getNewcalssid());
    tbnewsclassService.delete(tbNewsclass);