Grails - 告诉对象是否可以删除

时间:2013-05-16 10:28:19

标签: hibernate grails

在我的应用程序中,在一个事务中有一些我要删除的域对象,还有一些要更新:

       Advertiser.withTransaction {
        batch.each {  record ->
            if (recordsShouldBeDeleted(record))
                record.delete()
            else 
                record.save()
           }
        }

我知道其中一些是不同表的父键,所以我不能删除它们。 我现在想要,在循环中,如果记录无法删除,则不会发生任何事情,我会在以后处理它们。但就像现在一样,整个交易因一条记录而失败。

有没有办法知道,在我尝试删除对象之前,如果我能够这样做,那么我知道不会尝试删除这些特定对象,尽管我的recordsShouldBeDeleted返回true? (类似于检查约束的validate()方法?)

或者对于这种情况还有其他想法吗?

感谢。

1 个答案:

答案 0 :(得分:1)

我通常做的是使用try / catch块包围代码,如果删除失败,则不执行任何操作。 也许这不是最好的方法,但我还没有找到不这样做的理由。

Advertiser.withTransaction {
    batch.each {  record ->
        if (recordsShouldBeDeleted(record))
            try{
                record.delete()
            } catch (Exception e) {}
        else 
            record.save()
       }
    }