怎么做删除主键表信息的同时附带删除外键表的内容?我做的总是会出现异常:
com.microsoft.sqlserver.jdbc.SQLServerException: DELETE 语句与 REFERENCE 约束"FK_ProductTraceInfo_Chickling"冲突。该冲突发生于数据库"TraceSystem",表"dbo.ProductTraceInfo"(这是外键表), column 'ChicklingNumber'(与主键表关联的字段)。
我试着先去删除外键表的内容然后再删除主键表的内容,结果也是这个.郁闷...
if(service.deleteChickling(p))
                System.out.println("true");//输出true,因为在service层加了事务,我去数据库里看的时候数据还在,应该是它自己滚回去了.
service.deleteChickling(chi);把主键表的hbm.xml里这样写了cascade="" 也不行,一样的异常.
没蛰了....大家给个例子看看吧,或者告诉我我哪错了.

解决方案 »

  1.   

    比如说创建表:
    CREATE TABLE `employee` (
      `id` int(11) NOT NULL auto_increment,
      `name` varchar(12) default NULL,
      `depart_id` int(11) default NULL,
      PRIMARY KEY  (`id`),
      KEY `employee_fk` (`depart_id`),
      CONSTRAINT `employee_fk` FOREIGN KEY (`depart_id`) REFERENCES `department` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
    ) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
    在创建级联关系的时候加上ON DELETE CASCADE ON UPDATE CASCADE
      

  2.   

    hbm.xml中加cascade="all"
      

  3.   

    班级与学生是一对多,删除班级的时候如果想把学生一块删掉
    在Classes.hbm.xml 中设置      <set name="students" inverse="true" cascade="delete">
                <key>
                    <column name="cid" />
                </key>
                <one-to-many class="com.qulx.hib.domain.Student" />
            </set>