Grails GORM自引用属于删除与预期相反的方向

Dea*_*ses 3 grails grails-orm belongs-to

我有一个Grails域类,它是一个类别的层次结构.每个类别都有一个父类别(根类别除外).

class Category {
    String name

    static mapping = {
        cache true
        name index:'category_name_idx'
    }

    static belongsTo = [parent:Category]

    static constraints = {
        parent(nullable:true)
    }
}
Run Code Online (Sandbox Code Playgroud)

我的问题:删除级联与我期望的完全相反:

  • someSubCategory.delete()删除该类别,然后尝试删除父类别(如果父级有其他子级,则该类别将失败并出现完整性违规).
  • parentCategory.delete()不会级联删除其子项,而是因为完整性违规而失败.

我究竟做错了什么?我的理解是上面的'belongsTo'应该告诉GORM将父级的删除级联到所有子级,而不是从子级到其父级.

Mar*_*cel 6

如果我正确理解了一个Category属于一个父类,一个父类可以有多个子元素,那么我认为你需要一个hasMany关系,如下所示:

class Category {
    String name

    static mapping = {
        cache true
        name index:'category_name_idx'
    }

    static belongsTo = [parent:Category]
    static hasMany = [children: Category]

    static constraints = {
        parent(nullable:true)
    }
}
Run Code Online (Sandbox Code Playgroud)

我有类似的结构,从来没有与删除这样做的问题.

希望这可以帮助!