删除异常会在Grails中触发控制台

时间:2015-01-29 15:25:39

标签: grails gorm

我对删除声明的控制台输出有点麻烦。

我在这个项目中使用Grails 2.3.11。

这个想法非常简单并且有效,但是控制台有一个不需要的输出。

该项目允许用户删除与其他域对象无关的人。为此,我使用以下代码:

def person = Person.get(params.id)
try {
    person.delete(flush: true)
}
catch (org.springframework.dao.DataIntegrityViolationException e) {
    def returnData = [:]
    returnData.put("message", "Person is undeletable")
    returnData.put("success", false)
    render returnData as JSON
}

如果它在数据库中没有任何关系,则该对象将被删除。如果确实如此,它就不会被删除,这就是我想要的! 如果无法删除对象,则服务器响应是带有JSON的状态200,因此工作正常! 但它仍然会向控制台/日志发送堆栈跟踪,这在我看来是不必要的。

有没有办法解决这个问题,我已经看不到了?

提前致谢!

这里是堆栈跟踪的相关摘录:

| Error 2015-01-29 16:23:38,291 [http-bio-8080-exec-12] ERROR util.JDBCExceptionReporter  - Cannot delete or update a parent row: a foreign key constraint fails (`db`.`table`, CONSTRAINT `FKFC41E6E036872635` FOREIGN KEY (`person_id`) REFERENCES `person` (`id`))
...
| Error 2015-01-29 16:23:38,294 [http-bio-8080-exec-12] ERROR events.PatchedDefaultFlushEventListener  - Could not synchronize database state with session

Message: could not delete: [Person#13454]

Caused by MySQLIntegrityConstraintViolationException: Cannot delete or update a parent row: a foreign key constraint fails (`db`.`table`, CONSTRAINT `FKFC41E6E036872635` FOREIGN KEY (`person_id`) REFERENCES `person` (`id`))

0 个答案:

没有答案