Grails/Hibernate:如何通过isnull(property)命令最后得到NULL?

mcv*_*mcv 6 null grails hibernate criteria

通常,当按字段升序排序时,首先获得NULL值,然后获得更有趣的值.通常,您最后需要NULL值.在MySQL中,你可以这样做:

SELECT * FROM people ORDER BY ISNULL(name), name;

但是,我正在使用带有Hibernate标准的Grails,我完全不知道如何在那里做到这一点.这甚至是以任何方式支持的吗?是否有某种方法可以通过自定义SQL表达式进行排序?我讨厌将所有标准重写为纯SQL,只是为了让它正确排序.

小智 5

如果您要订购和 HibernateCriteriaBuilder设置NullPrecedenceGORMAbstractHibernateCriteriaBuilder provies你的方法顺序(),你可以设置一个org.hibernate.criterion.Order来像普通休眠

     People.createCriteria().list (){
          order(org.hibernate.criterion.Order.asc('name')
                . nulls(org.hibernate.NullPrecedence.LAST)
           )
     }
Run Code Online (Sandbox Code Playgroud)


小智 2

在休眠中,您可以尝试使用以下代码:

标准 c = ...;

c.addOrder(Order.asc("名称").nulls(NullPrecedence.LAST));