Grails级联删除继承树

时间:2012-04-03 10:30:21

标签: inheritance grails gorm

我有以下课程:

abstract class Foo {
    String x
    ...

    static mapping = {
        tablePerHierarchy false
    }
}

class Bar extends Foo {
    String y
    ...
}

FooController中的删除操作如下所示:

def delete() {
    def f = Foo.get(params.id)
    f.delete()
}

在我的特定场景中, Foo.get(params.id)会返回Bar类型的对象,所以当我调用 f.delete()时,Grails会删除记录在Bar表中,但不是从Foo表中记录。这会导致各种问题,因为Grails只删除了一半的对象记录。

在不使用tablePerHierarchy时,确保删除级联继承层次结构的最佳方法是什么?

我们选择不使用TablePerHierarchy是有正当理由的,所以我无法改变它。

此外,调用以下代码也会导致Bar记录被删除,但不会删除Foo:

Foo.executeUpdate("delete Foo f where f.id = :fid", [fid: Long.parseLong(params.id)])

0 个答案:

没有答案