在grails域类上使用泛型时出错

在grails域类上使用泛型时出错,grails,gorm,hierarchy,Grails,Gorm,Hierarchy,我正在尝试创建一个通用抽象层次结构实现,代码如下: abstract class AbstractHierarchy<T> { T parent static hasMany = [children: T] static constraints = { parent(nullable: true) } static mapping = { tablePerHierarchy false } } 所

我正在尝试创建一个通用抽象层次结构实现,代码如下:

abstract class AbstractHierarchy<T> {
    T parent

    static hasMany = [children: T]

    static constraints = {
        parent(nullable: true)
    }

    static mapping = {
        tablePerHierarchy false
    }
}
所以问题是,我做错什么了吗?grails支持这一点吗? 在搜索错误时,我找到了这个
顺便说一下,我使用的是grails 2.3.7。

由于类型擦除,我希望在域模型中使用
T
的任何地方,都可以使用
对象。所以从GORM的角度来看,你上面的模型相当于

abstract class AbstractHierarchy {
    Object parent

    static hasMany = [children: Object]

    static constraints = {
        parent(nullable: true)
    }

    static mapping = {
        tablePerHierarchy false
    }
}

我想这不是你想要的。因此,这个故事的寓意是:不要使用泛型来表示域类之间的关系。

可以使用类型参数的上限,例如
t extensed AbstractHierarchy
。然后,类型擦除将导致
AbstractHierarchy父级
static hasMany=[子级:AbstractHierarchy]
。但是我不确定你是否真的想首先创建一个这样的类。听起来太普通了。
abstract class AbstractHierarchy {
    Object parent

    static hasMany = [children: Object]

    static constraints = {
        parent(nullable: true)
    }

    static mapping = {
        tablePerHierarchy false
    }
}