我有以下课程:
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)])