毎日いくつかのレコードを含むテーブルがあり、各レコードには日時を表す列があります。日ごとのレコード数を選択したいのでJPQL
、次のようなクエリで作成したいと思います。
SELECT COUNT(*) FROM ORDERS o GROUP BY TRUNC(o.ORDER_DATE)
残念ながら、... :( どうすればこれを行うことができますかJPQL
?TRUNC
キャストを使おう!それはうまくいく
@Query("select new DBClass(COUNT(c.field1) as count,cast(c.created as date)) from Table c GROUP BY cast(c.created as date)")
動作するかどうかわかりませんが、メソッド関数を使用しましたか? それは次のようなものになります
Expression<Date> truncExpr = cb.function("TRUNC",Date.class,orders.get("orderDate"),"MM");
criteria.groupBy(truncExpr);
JPQL クエリを解釈するときの Hibernate は、それが知っている関数をすべて理解します。使用している方言が TRUNC を理解していれば問題ありません。そうでない場合は、TRUNC 関数を登録するカスタム方言を作成します。