hibernate - 在多个关联上使用创建条件

标签 hibernate grails groovy createcriteria

从ClassD实例获取status属性值并从ClassA实例开始获取name属性值的最有效解决方案是什么?

我可以在每个列表中使用on循环,但是我认为通过使用创建条件可以找到更好的解决方案

Class ClassA {
    static hasMany = [CLassBList:ClassB]
}


Class ClassB {
   static hasMany = [CLassCList:ClassC]
   static belongsTo = [ClassA]
}


Class ClassC {
    static hasMany = [CLassDList:ClassD]
    static belongsTo = [ClassB]
 }


Class ClassD {
    String name
    String status
    static belongsTo = [ClassC]
}

最佳答案

假设(尽管您的代码未提及)(假设您对ClassA有一些要搜索的条件),那么可以使用如下的createCriteria:

def c = ClassD.createCriteria()
def results = c.list () {
  projections { property('status') }
  classC {
    classB {
      classA {
        eq('classAProperty', someClassAValue)
      }
    }
  }
}

如果只期望1个结果,请使用.get()而不是.list(),那么您可能还需要order()子句。

如果要返回整个ClassD,请除去这些凸起,然后视情况进行处理。

关于hibernate - 在多个关联上使用创建条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32602855/

相关文章:

java - Order by 子句在 hibernate 中不起作用

grails - 无法覆盖 AuthenticationSuccessHandler 的 onAuthenticationSuccess 方法

grails - Grails withTransaction()和事务服务方法之间的区别

java - 无法解析不受支持的 major.minor 版本 52.0

java - 获取单个单元格值的Sql语句

java - 如何阻止 hibernate 工具实现 Serialized 接口(interface)

java - JPA 非主键字段自动递增

grails - 大量更新

grails - 如何在 grails 中安装和使用 httpbuilder 插件

eclipse - 从 Eclipse 调试在 ScriptEngine 中运行的 Groovy 脚本