как использовать date () в критериях гибернации - PullRequest
1 голос
/ 01 апреля 2012

Я хотел бы использовать функцию Date () в критериях гибернации, поскольку одно поле является меткой времени.

Мой sql будет:

"select * from feed where DATE(date) = DATE(NOW()) + INTERVAL 5 DAY"

Когда я пытаюсь в критериях:

critera.add(Restrictions.eq("DATE(date)", "DATE(NOW()) + INTERVAL 5 DAY"));

Я получаю:

could not resolve property: DATE(date) of: com.mycomapany.model.Feed

У меня там в фиде поле по названию даты.

В чем проблема? Я использую MySQL

Ответы [ 3 ]

4 голосов
/ 01 апреля 2012

Лучшее решение - использовать критерии API, которые вы начали использовать.

Calendar c = Calendar.getInstance(LOCALIZATION);
//Add 5 Days
c.add(Calendar.DATE, 5);
criteria.add(Expression.ge("dateColumn",c.getTime());
1 голос
/ 01 апреля 2012

Использование Joda Time :

public List<Feed> findByDaysFromToday(int daysFromToday) {
    return em.createQuery(
            "SELECT f FROM Feed f WHERE f.date BETWEEN :start AND :end")
            .setParameter("start",
                          new LocalDate()
                                  .toDateMidnight()
                                  .toDate(),
                          TemporalType.DATE)
            .setParameter("end",
                          new LocalDate().plusDays(daysFromToday)
                                  .toDateMidnight()
                                  .toDateTime()
                                  .minusMillis(1)
                                  .toDateTime()
                                  .toDate(),
                          TemporalType.DATE)
            .getResultList();
}
1 голос
/ 01 апреля 2012

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

Одной из основных функций Hibernate является абстракция специфичных для поставщика базы данных функций с помощью Hibernate Dialect.

Вы пытаетесь получить доступ к функциям MySQL напрямую, но через независимый от производителя интерфейс, таким образом, ваша сложность. Hibernate может иметь поддержку для интервалов дат, но не - см. https://hibernate.onjira.com/browse/HHH-2434

Итак, параметры кажутся:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...