当前位置: 首页 > 知识库问答 >
问题:

如何在Grails/GORM中应用NULLS LAST排序

訾凯歌
2023-03-14

我使用的是Grails DetachedCriteria查询,需要在降序排序时获取最后排序的空值。这是针对Oracle数据库的。

根据我到目前为止所做的研究,Hibernate中没有对此的直接支持,因此Grails中也没有:

Grails/Hibernate:如何按isnull(属性)排序以最后获得null?

https://hibernate.atlassian.net/browse/HHH-2381

基于这些,我最好的选择似乎是从HiberNate扩展订单类,并自己添加NULLS LAST支持。沿着这条路,有人能给我一个如何通过Grails暴露的例子吗?我对直接HiberNate几乎没有经验,所以给出的例子很难遵循。

或者:在Oracle中,是否有任何方法可以通过列上的某些属性等在表定义中指定NULLS LAST排序?

共有1个答案

公羊向荣
2023-03-14

下面是grails标准中的一个示例,通过重写hiberNate addOrder方法对Nulls进行排序

def userCriteria = User.createCriteria()
List results = userCriteria.list(max:limit, offset:offset) {
    eq("isActive", true)
    ilike("firstName",text+"%")
    userCriteria.addOrder(Order.asc("firstName").nulls(NullPrecedence.LAST));
}

您甚至可以在块中使用它。如。

or{
    userCriteria.addOrder(Order.asc(USERNAME).nulls(NullPrecedence.LAST));
    userCriteria.addOrder(Order.asc(EMAIL).nulls(NullPrecedence.LAST));
    userCriteria.addOrder(Order.asc(FIRST_NAME).nulls(NullPrecedence.LAST));
    userCriteria.addOrder(Order.asc(LAST_NAME).nulls(NullPrecedence.LAST));
}

希望这能帮助像我这样的人搜索。

 类似资料:
  • 我需要在Grails中使用GROUP_CONCAT聚合函数,最好来自HQL,但也可以使用标准。 我有以下疑问: } 还是没运气。我得到: -[METHOD_CALL]methodnode:'('+-[METHOD_NAME]identnode:'group_concat'{originaltext=group_concat}-[EXPR_LIST]sqlnode:'expr list'-[DOT]

  • 问题内容: 我有一个表,其中包含需要根据一组条件定期清除的记录。 我期望我可以使用条件构建器来删除记录,但这失败了,因为条件上没有方法… 所以我想也许我先查询一下集合,然后删除那个… 由于相同的原因,不同的对象,这也会失败。 那么正确的方法是什么呢?我似乎不得不遍历每个项目所调用的整个结果集,这是多余的(不正当的)。 我知道我可以形成一个查询来直接在HQL或SQL中执行,但这也感觉不对。条件构建器

  • 问题内容: 我正在编写一个小型Grails应用程序,并且在运行以下相当简单的代码时,我继续获得StaleObjectStateException:s约占“ createfoo”调用的1/10:th。很可能我错过了使用GORM的最佳方法。 这是代码: 我对GORM最佳做法的疑问: “ if-validate()-then-save()-else-discard()”是否是在GORM中持久保存新对象的

  • 问题内容: 我正在尝试在GORM中定义树结构。这是我的模型: 插入似乎可以正常工作,但是当我无法加载具有多个级别和子级别的Tree时。我想我在关系中错过了一些东西:-树应该引用rootLevel(以及可选地引用所有子级别)-一个级别应该引用其父级别,其子级别和全局父树 您能指出我正确的方向以获得这样的树结构吗?谢谢 问题答案: 我最终得到了这个解决方案(感谢朋友): 和 我错过了Tree和Leve

  • 问题内容: 有什么方法可以在Grails / Gorm中使用懒惰属性获取?像这样 @Basic(提取= FetchType.LAZY) 注释(它也适用于左连接获取吗?) (例如,延迟加载String属性) 问题答案: 这个问题被问Grails的用户邮件列表在这里。讨论了几个不同的选项。

  • 问题内容: 是否可以使用GORM标准执行“输入”标准。我正在寻找以下SQL的等效项 如果可能的话,我猜语法会像这样: 问题答案: Grails createCriteria文档包含一个使用子句的示例: 该文档包括以下说明: 注意:“ in”是一个时髦的保留字,因此必须用引号将其转义。