【问题标题】:Group Criteria API query's results by the day part of a date按日期的日期部分分组条件 API 查询的结果
【发布时间】:2013-03-16 05:42:17
【问题描述】:

在 Criteria API 中,我必须根据查询中返回的日期列的日期部分对查询结果进行分组。你能建议如何做到这一点吗?

以下是多选查询

cq.multiselect(root.get("id"), root.get("recievedOn")) ;

receivedOn 是日期列。我想根据日、周、月和年对查询进行分组。您能否建议如何执行此操作。

【问题讨论】:

    标签: jpa jpa-2.0 criteria-api


    【解决方案1】:

    如果您使用 GROUP BY,那么您只能按分组依据的字段进行选择,或者应用聚合函数(count/min/max/etc),所以我不确定您要做什么?

    按日期分组很容易,但如果您只想按日期的特定部分分组,则需要使用函数。 Criteria API 没有定义任何日期函数,但您可以使用 function() API 来调用特定的数据库函数。

    看, http://en.wikibooks.org/wiki/Java_Persistence/Criteria#Group_By

    http://en.wikibooks.org/wiki/Java_Persistence/Criteria#Criteria_API_special_functions

    如果您使用的是 EclipseLink,您还可以将 Expression 对象与 Criteria 结合起来以获得额外的功能支持,

    http://wiki.eclipse.org/EclipseLink/UserGuide/JPA/Basic_JPA_Development/Querying/Criteria#JpaCriteriaBuilder_and_EclipseLink_Extensions

    或者你可以使用 JPQL,它有更多的扩展,

    http://www.eclipse.org/eclipselink/documentation/2.4/jpa/extensions/j_extract.htm#extract

    【讨论】:

      猜你喜欢
      • 2011-10-07
      • 2019-04-03
      • 2013-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-27
      相关资源
      最近更新 更多