我定义了以下域:
class Module implements Comparable<Module> {
String name
Integer displayOrder
List<Module> subModules
Set<ModuleItem> items
static belongsTo = [parent: Module]
static hasMany = [subModules: Module, items: ModuleItem]
static constraints = {
parent nullable: true
}
static mapping = {
version false
sort 'displayOrder'
subModules joinTable: false, column: 'parent_id', lazy: false, sort: 'displayOrder'
items lazy: false, sort: 'displayOrder'
}
@Override
int compareTo(Module other) {
this.displayOrder <=> other.displayOrder
}
}
当我得到一个带有子模块的模块(甚至是第一级)时,它们按它们的 sub_modules_idx 而不是 displayOrder 排序。
我尝试了各种解决此问题的方法,包括标准,但似乎无法以除 sub_modules_idx 之外的任何顺序恢复子模块。
如何按 displayOrder 顺序恢复 subModules?
最佳答案
对于我的用例,我能找到的唯一解决方案是在获取模块后应用排序。
IE。:
Module.list().each { module ->
module.subModules = module.subModules.sort {it.displayOrder}
}
如果有人可以提出更好的解决方案,我会接受他们的回答。
关于hibernate - 自引用列表自定义可更新顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39748146/