Группа к месяцу с критериями в В спящем режиме

Я пытаюсь получить отчет с помощью Критериев и ProjectionList, и я - довольно новое использование, это через в спящем режиме. Таким образом, у меня есть эта модель:

private Long _userId;

 private Category _category;

 private Long _companyId;

 private Double _amount;

 private Date _date;

И я создающий запрос с помощью этого:

  public List sumPaymentsByUserCategoryPeriod(Category category, Long userId,Integer period){
  GregorianCalendar from = new GregorianCalendar();
  from.add(Calendar.MONTH, -period);
  List<CategoryAmount> resultDTO= new ArrayList<CategoryAmount>();

  Criteria criteria = getSession().createCriteria(Payment.class);
  criteria.add(Restrictions.eq("_category", category));
  criteria.add(Restrictions.eq("_userId",userId));
  criteria.add(Restrictions.between("_date", from.getTime(), new Date()));

  ProjectionList projectionList = Projections.projectionList();
  projectionList.add(Projections.sum("_amount"));
  projectionList.add(Projections.groupProperty("_date"));
  criteria.setProjection(projectionList);
  return  criteria.list();

 }

В основном этот метод получает Категорию и идентификатор пользователя для фильтрации платежных записей и период, кто укажет, сколько месяцев с этого времени для поддержки я хочу суммировать. Как я мог сгруппировать результат суммы к месяцам?

Любая справка или подсказка я буду ценить его!

28
задан Dan 14 January 2010 в 21:10
поделиться

1 ответ

Я нашел ответ, и его довольно просто. Я изменил «GroupProperty» в проекционных критериях для этого:

projectionList.add(Projections.sqlGroupProjection(
    "month({alias}.DATE) as month, year({alias}.DATE) as year", 
    "month({alias}.DATE), year({alias}.DATE)", 
    new String[]{"month","year"}, 
    new Type[] {Hibernate.DOUBLE}));

Хорошо. Я объясню sqlgroupprouge. Первым аргументом является частью запроса после «выбора», например:

Select [firstPartOfSqlGroupProjection] * boo;

«{псевдоним}» - псевдоним, который поднимает, использующую в запросе для ссылки на таблицу.

Второй аргумент функции SQLGROUPPROIENCE - это группа по критериям, третий аргумент - это имена столбцов, которые вы получите от группы и, наконец, тип данных, которые вы будете использовать.

39
ответ дан 28 November 2019 в 03:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: