在我的应用程序中,在一个事务中,有一些我要删除的域对象,而有些要更新:
Advertiser.withTransaction {
batch.each { record ->
if (recordsShouldBeDeleted(record))
record.delete()
else
record.save()
}
}
我知道其中一些是另一个表的父键,因此我不能删除它们。
我现在想在循环中,如果无法删除该记录,则什么也不会发生,稍后再处理。但就目前而言,由于一笔记录,整个交易失败了。
有没有办法知道,在我尝试删除对象之前,如果可以的话,尽管我的
recordsShouldBeDeleted
返回true,但我不打算删除这些特定对象? (类似于validate()
方法来检查约束吗?)或对此情况还有其他想法吗?
谢谢。
最佳答案
我通常要做的是用try / catch块包围代码,如果删除失败,则什么也不做。
也许这不是最好的方法,但是我还没有找到不这样做的理由。
Advertiser.withTransaction {
batch.each { record ->
if (recordsShouldBeDeleted(record))
try{
record.delete()
} catch (Exception e) {}
else
record.save()
}
}
关于hibernate - Grails-告诉对象是否可以删除,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16584997/