0
例外エラーが発生した後にオブジェクトプロパティ値を変更できますか?私は私の削除アクションでこれを実行します。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)? アクションの削除はTaskController内にあります。 – Matheus