删除后catch(DataIntegrityViolationException)错误后更改域的属性。 Grails 2.5

时间:2015-04-08 19:52:37

标签: grails

我试图在删除错误后修改域属性。我的行动代码如下:

@Transactional
def delete(User userInstance) {

    if (userInstance == null) {
        notFound()
        return
    }

    try {
        userInstance.delete(flush: true)
    }
    catch(e) {
        userInstance.active = false
        userInstance.save(flush: true)
        render status: 200
        return
    }


    request.withFormat {
        form multipartForm {
            flash.message = message(code: 'default.deleted.message', args: [message(code: 'user.label', default: '${className}'), userInstance.id])
            redirect action:"index", method:"GET"
        }
        '*'{ render status: NO_CONTENT }
    }
}

我想在删除时发生错误时将活动属性值更改为false。

1 个答案:

答案 0 :(得分:1)

您正在获取DataIntegrityViolationException,因为您违反了某些外键关系规则,在您的情况下,很可能您的user实例被其他某个域对象(表)引用。

你可以在你的情况下在catch块上做你想做的任何事情userInstance.active = false没问题,但你没有因为这个而得到错误(再次从catch块中引发另一个错误)。