【发布时间】:2014-01-08 00:40:47
【问题描述】:
我正在尝试在 Grails 中实现子页面域类,我希望子页面可以存储另一个子页面。我正在阅读 this 和 this 的帖子,但这些解决方案似乎都不适合我。
我的班级是这样的:
class Subpage implements Comparable{
String title
Integer orderOfSubpage
SortedSet subpageChild
static hasMany = [component: Component, subpageChild: Subpage]
static belongsTo = [domain: Domain, subpageParent: Subpage]
static constraints = {
orderOfSubpage nullable:false;
subpageParent nullable:true;
subpageChild nullable:true;
}
@Override
public int compareTo(Object o) {
if (this.orderOfSubpage > o.orderOfSubpage) {
return 1;
} else if (this.orderOfSubpage < o.orderOfSubpage) {
return -1;
}
return 0;
}
}
根据实现,我希望 Hibernate 创建带有子项的附加表,但我已经查看了数据库,关于子页面的子页面的唯一“提及”是 SUBPAGE 表中的 SUBPAGE_PARENT_ID 列。使用这样的解决方案,我想我将不得不遍历整个表来获取所有孩子(或者我错过了一些东西......)。
切入正题:我如何实现这一点才能获得一个有可能获得所有孩子的子页面类?
提前致谢。
【问题讨论】:
-
为什么要迭代整个表?您将在父 ID 上进行选择。孩子们是同一个班级——为什么需要一个单独的表格来保存相同的数据?在那方面,你不必手动执行此操作,这就是 gorm 的用途。
-
查看这篇关于创建树形结构的文章。 stackoverflow.com/questions/5880672/…