Критерии гибернации с использованием Group By Hour

0

Поэтому параметры для моего запроса - это только диапазон дат.

Примерами параметров являются

startDateTime = '2018-01-10 00:00:00'
endDateTime   = '2018-01-11 00:00:00'

К этому диапазону дат мне нравится группировать счет и количество на час диапазона дат, 0 - 23 - это значение часов.

Итак, ниже мой код - это.

dc.add(Restrictions.ge("date", startDateTime));
dc.add(Restrictions.lt("date", endDateTime));
dc.setProjection(
    Projections.projectionList()
        .add(Projections.alias(Projections.sum("amount"), "amount"))
        .add(
            Projections.sqlProjection(
                "Cast(Count(id) as Integer) count",
                new String[]{"count"},
                new Type[]{StandardBasicTypes.INTEGER})
        )
        .add(
            Projections.sqlProjection(
                "hour(date) as date",
                new String[]{"date"},
                new Type[]{StandardBasicTypes.INTEGER})
        )       
);

Результат - это.

[
   {
     "amount": 0.1,
     "count": 1,
     "date": 3
   }, 
   {
     "amount": 0.3,
     "count": 1,
     "date": 3
   },
   {
     "amount": 1.5,
     "count": 1,
     "date": 11
   }, 
   {
     "amount": 2.2,
     "count": 1,
     "date": 11
   },
   {
     "amount": 0.6,
     "count": 1,
     "date": 11
   }
]

Любая идея как?

  • 0
    это не группировка. возвращая данные для каждой строки.
Теги:
hibernate
group-by
hibernate-criteria

1 ответ

0

вам нужно добавить groupProperty. Я не уверен в параметрах

dc.add(Restrictions.ge("date", startDateTime));
dc.add(Restrictions.lt("date", endDateTime));
dc.setProjection(
Projections.projectionList()
    .add(Projections.alias(Projections.sum("amount"), "amount"))
    .add(
        Projections.sqlProjection(
            "Cast(Count(id) as Integer) count",
            new String[]{"count"},
            new Type[]{StandardBasicTypes.INTEGER})
    )
    .add(
        Projections.groupProperty("hour(date)","date")
    )

);
  • 0
    Привет Anoop, когда я попытался Projection.groupProperty ("час (дата)", "дата"), у меня есть ошибка компиляции, groupProperty принимает только один строковый параметр, я использую здесь Hibernate 3, какую версию Hibernate вы используете ?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню