我可以在异常错误捕获后更改对象属性值吗?我在删除操作中执行此操作:
@Transactional
def delete(Task task) {
if (task == null) {
transactionStatus.setRollbackOnly()
notFound()
return
}
try{
task.delete flush:true
}catch (DataIntegrityViolationException e){
Task.withNewSession{
def taskError = Task.get(task.id)
taskError.deleted = true
taskError.save()
}
}
request.withFormat {
form multipartForm {
flash.message = message(code: 'default.deleted.message', args: [message(code: 'task.label', default: 'Task'), task.id])
redirect action:"index", method:"GET"
}
'*'{ render status: NO_CONTENT }
}
}
但是我收到了这个错误:
'错误:当前事务被中止,命令被忽略直到结束 交易块。'
我尝试使用一种方法来处理异常:
@Transactional
class UtilService {
def delete(Object domain) {
if(domain?.properties?.containsKey('deleted')){
domain.deleted = false
domain.save(flush: true)
}
}
}
和赶上:
@Transactional
def delete(Task task) {
...
try{
task.delete flush:true
}catch (DataIntegrityViolationException e){
utilService.delete(task)
}
...
}
但我仍然遇到同样的错误。
答案 0 :(得分:0)
尝试将try / catch块移动到控制器并在服务中创建一个新方法,以便在发生异常时处理它。