Ich kann einen Objekteigenschaftswert nach dem Ausnahmefehler Catch ändern? Ich tue dies in meiner Löschaktion:Ändern Objektwert nach Fremdschlüssel Ausnahme in 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 }
}
}
aber ich erhalte diesen Fehler:
'ERROR: current transaction is aborted, commands ignored until end of transaction block.'
Ich habe versucht, diesen Service mit einem Verfahren zu tun, um die Ausnahme zu behandeln:
@Transactional
class UtilService {
def delete(Object domain) {
if(domain?.properties?.containsKey('deleted')){
domain.deleted = false
domain.save(flush: true)
}
}
}
und auf fangen:
@Transactional
def delete(Task task) {
...
try{
task.delete flush:true
}catch (DataIntegrityViolationException e){
utilService.delete(task)
}
...
}
aber ich bekomme immer den gleichen Fehler.
Ich habe einen neuen Dienst erstellt, aber immer den gleichen Fehler erhalten. Sie können das Beispiel veranschaulichen? – Matheus
Haben Sie den Controller wie gesagt benutzt? –
meinst du, mache so etwas wie: [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)? Die Aktion delete befindet sich im TaskController. – Matheus