我正在寫一個查詢來查找來自我的實體表的特定日期的日期和計數,並運行到groupBy語句的問題中。Criteria API和JPA2 GroupBy與日期問題
這裏是我的標準API調用:
CriteriaBuilder criteriaBuilder = em.getCriteriaBuilder();
CriteriaQuery<Tuple> criteriaQuery = criteriaBuilder.createTupleQuery();
Root<HtEntity> from = criteriaQuery.from(entityClassType);
Expression<String> log_date = criteriaBuilder.function("TO_CHAR",
String.class, from.get(Constants.PARAM_DATE), criteriaBuilder.literal("yyyy-MM-dd")
);
//create the select statement
criteriaQuery.select(
criteriaBuilder.tuple(
log_date.alias("log_date"),
criteriaBuilder.count(from)));
criteriaQuery.groupBy(log_date); //ISSUE HERE!!!
TypedQuery<Tuple> query = em.createQuery(criteriaQuery);
List<Tuple> results = query.getResultList();
,但不嘗試與TO_CHAR投日期列在僅使用日期列它的工作原理,但顯然不是聚合爲我想。我只想在YYYY-MM-DD,而不是整個時間戳的日期,我只能看到使用GROUPBY導致錯誤這樣
「org.hibernate.exception.SQLGrammarException:無法提取 結果集」
而且有查詢字符串,它是從我的調試發現編譯:
select function('TO_CHAR', generatedAlias0.date, :param0), count(generatedAlias0) from LogMessageEntity as generatedAlias0 group by function('TO_CHAR', generatedAlias0.date, :param1)
請讓我知道我做錯了。相應的Postgres SQL查詢應該爲此工作,因爲我可以測試它並看到它會起作用。
嘿,你有沒有找到解決辦法? – Ayushi
是的,我會添加一個答案來顯示解決方案 – rosenthal