链接到自身的Grails表

时间:2012-08-30 16:28:19

标签: grails one-to-many many-to-one

我想创建一个链接到自身的grails域类。

这篇相关文章提出了一个解决方案,但我无法让它发挥作用:Grails domain class relationship to itself

首先,我不明白可比较的是什么,需要添加一个int compareTo(obj)方法。

在不实现Comparable编译的情况下将以下内容添加到我的代码中,但grails在运行时崩溃:

//NavMenu parent
SortedSet subItems
static hasMany = [subItems: NavMenu]
static belongsTo = [parent: NavMenu]
static constraints = { parent(nullable:true) }

提前致谢

2 个答案:

答案 0 :(得分:2)

当您使用SortedSet时,会在内部执行排序算法,但它需要排序条件。您需要实现Comparable接口,因为这是为内部算法提供排序条件的标准方法。

如果您不需要特定订单,则可以删除SortedSet subItems行,从而避免实施Comparable界面。

答案 1 :(得分:0)

如果您不想使用Comparable接口,可能应该使用List而不是SortedSet。

使用列表,您可以按照添加的顺序保留对象,并且能够通过索引像数组一样引用它们。

这是官方文档的一个例子:

class Author {
    List books

    static hasMany = [books: Book] 
}