2013-03-26 35 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