今天在写多个删除功能的时候出现了这么一个错误:意思是删除操作的时候,没有找到对应的外键。


Cannot delete or update a parent row: a foreign key constraint fails (`ssh03`.`role_privilege`, CONSTRAINT `FK45FBD628F05C38CB` FOREIGN KEY (`role_id`) REFERENCES `role` (`roleId`))
Cannot delete or update a parent row: a foreign key constraint fails (`ssh03`.`role_privilege`, CONSTRAINT `FK45FBD628F05C38CB` FOREIGN KEY (`role_id`) REFERENCES `role` (`roleId`))
Could not execute JDBC batch update
Could not execute JDBC batch update; SQL [delete from role where roleId=?]; constraint [null]; nested exception is org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update

org.springframework.dao.DataIntegrityViolationException: Could not execute JDBC batch update; SQL [delete from role where roleId=?]; constraint [null]; nested exception is org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update

在网上找了很久,都没有找到对应的错误。。我的删除操作是先查找Role对象,再通过删除它

后来debug起来又是匪夷所思的:后台能够得到外界传递过来的id

Could not execute JDBC batch update; SQL [delete from role where roleId=?]; constraint [null]; neste_javascript

在查询对象的时候,就死活查不了外键的数据【让我搞了很久很久】。。

Could not execute JDBC batch update; SQL [delete from role where roleId=?]; constraint [null]; neste_javascript_02

最后发现id上多了一个空格???????至于为什么多了一个空格,,我现在还不知道。。。于是把空格去掉,就解决这个bug了。。。


    /*批量删除*/
    public String deleteSelect() {
        for (String s : selectedRow) {

            roleServiceImpl.delete(s.trim());
        }
        return "list";
    }

….如果知道为什么会多出一个空格的,请在评论下告诉我….

<script type="text/javascript"> $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering = $('<ul/>').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('<li/>').text(i)); }; $numbering.fadeIn(1700); }); }); </script>