Я могу изменить значение свойства объекта после исключения ошибки исключения? Я делаю это в моем удалении действия:Изменение значения объекта после исключения внешнего ключа в Grails
@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 }
}
}
, но я получаю эту ошибку:
'ERROR: current transaction is aborted, commands ignored until end of transaction block.'
Я попытался сделать эту услугу с помощью метода для обработки исключения:
@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)
}
...
}
но я продолжаю получать ту же ошибку.
Я создал новую услугу, но продолжаю получать ту же ошибку. Вы можете продемонстрировать, как это сделать? – Matheus
Вы использовали контроллер, как я уже говорил? –
Вы имели в виду сделать что-то вроде этого: [http://mrhaki.blogspot.com.br/2014/05/grails-goodness-exception-methods-in.html](http://mrhaki.blogspot.com.br /2014/05/grails-goodness-exception-methods-in.html)? Действие delete находится внутри TaskController .. – Matheus