0

Criteria APIでは、クエリで返された日付列の日の部分に基づいてクエリの結果をグループ化する必要があります。これを行う方法を提案できますか?

以下は複数選択クエリです

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

ここで、recievedOnは日付列です。日、週、月、年に基づいてクエリをgroupByしたい。これを行う方法を提案していただけますか。

4

1 に答える 1

0

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

于 2013-03-26T13:36:06.843 に答える