hibernate - 自引用列表自定义可更新顺序

标签 hibernate grails grails-orm

我定义了以下域:

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/

相关文章:

grails - 使用<g:select> grails

validation - 如何执行已验证的Grails命令对象?

Grails 拆分或标记化

Grails 可搜索插件多对多搜索

hibernate - 如何在 Grails 中创建 "view"域对象

java - Hibernate 问题,一个以对象为键、以整数为值的映射

java - 线程 "main"中的异常 org.hibernate.MappingException : Unknown entity

java - hibernate 验证不使用 Spring Boot LocalValidatorFactoryBean

java - 部署后没有数据库连接(Java Hibernate)

grails - 使用gorm的一对多映射