我对删除声明的控制台输出有点麻烦。
我在这个项目中使用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`))