2013-03-26 31 views
0

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

以下是多选查询

cq.multiselect(root.get( “ID”),root.get( “recievedOn”));

其中recievedOn是日期列。我想根据日,周,月和年进行查询。你能建议如何做到这一点。

回答

0

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

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

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

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

如果您正在使用的EclipseLink,你也可以结合使用标准附加功能的支持表达对象,

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