我想创建一个链接到自身的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) }
提前致谢
答案 0 :(得分:2)
当您使用SortedSet
时,会在内部执行排序算法,但它需要排序条件。您需要实现Comparable
接口,因为这是为内部算法提供排序条件的标准方法。
如果您不需要特定订单,则可以删除SortedSet subItems
行,从而避免实施Comparable
界面。
答案 1 :(得分:0)
如果您不想使用Comparable接口,可能应该使用List而不是SortedSet。
使用列表,您可以按照添加的顺序保留对象,并且能够通过索引像数组一样引用它们。
这是官方文档的一个例子:
class Author {
List books
static hasMany = [books: Book]
}