2

我想创建一个链接到自身的 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) }

提前致谢

4

2 回答 2

2

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

如果您不需要特定的订单,您可以删除该SortedSet subItems行,从而避免实现Comparable接口。

于 2012-08-30T16:56:11.210 回答
0

如果你不想使用 Comparable 接口,也许你应该使用 List 而不是 SortedSet。

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

这是来自官方文档的示例:

class Author {
    List books

    static hasMany = [books: Book] 
}
于 2012-08-30T17:30:01.900 回答