Я пытаюсь сгруппировать по месяцам некоторые строки, используя HQL, но я немного новичок в этом API и, похоже, не могу заставить его работать.
Вот мой код:
Criteria query = getHibernateSession().createCriteria(SalesPerformance.class);
// summary report is grouped by date
query.setProjection(Projections.projectionList().add(
Projections.groupProperty("effectiveDate"), "effectiveDate").add(
Projections.groupProperty("primaryKey.seller", "seller").add(
Projections.sum("totalSales"))));
// sub-select based on seller id
query.add(Property.forName("primaryKey.seller.id").eq(sellerId)).setFetchMode(
"primaryKey.seller", FetchMode.SELECT);
query.add(Property.forName("primaryKey.effectiveDate").le(new Date()));
query.add(Property.forName("primaryKey.effectiveDate").ge(DateUtils.truncate(new Date(), Calendar.MONTH)));
query.addOrder(Order.desc("primaryKey.effectiveDate"));
return query.list();
Моя проблема с этим запросом состоит в том, что он будет возвращать одну строку в день, когда мне понадобится одна строка в месяц из-за Projection.groupProperty ("ffectiveDate ").
Я думал об использовании Projection.sqlGroupProjection вместо Projection.groupProperty и добавлял некоторый HQL, но документация и примеры, которые я нашел, не помогли мне понять, как я собираюсь поместить правильную инструкцию postresql в этот метод .
Кто-нибудь, кто знает о Postgres и HQL, может дать несколько советов, пожалуйста?