【发布时间】:2014-02-21 13:04:15
【问题描述】:
对于 Grails 项目,我需要它按关联实体的字段进行排序。喜欢获取按作者姓名排序的条目:
def crteria = new DetachedCriteria(Entry)
criteria.list {
order('author.name', 'asc')
}
当前示例将失败:
org.hibernate.QueryException: could not resolve property: author.name of: Entry
这是 Hibernate 的常见问题,通常通过为 author 引入别名来解决,例如:
criteria.createAlias('author')
criteria.addOrder(Order.asc('author.name'))
但是Grailsgorm.DetachedCriteria没有这个方法的问题,抛出NoSuchMethodException。而且我不想使用普通的hibernate.DetachedCritera,因为需要支持使用 Groovy 标准编写的遗留代码。
如何添加这样的别名?或者如何在没有它的情况下应用这种排序?
也许有一种方法是创建一个hibernate.DetachedCriteria,添加别名,然后将其转换为gorm.DetachedCriteria?
-
PS 什么是疯狂的,groovy order('author.name', 'asc') 适用于集成测试。仅在真正的应用程序上失败,grails run-app。
【问题讨论】:
-
您是否已经尝试使用
author作为关联?criteria.list { author { order('name', 'asc') } } -
是的,我试过了。在这种情况下它只是被忽略了
标签: hibernate grails grails-orm