Как игнорировать время в запросе даты с JPQL?

У меня проблемы с выполнением запроса на JPQL с использованием даты (и игнорируя время). Это мой метод:

@Override
public List<Event> findByDayAndStatus(User usr, Date d, char status) {
    Query q = em.createQuery("SELECT e FROM Event as e where " +
                             "e.idusr=:usr AND e.datestart=:d AND " + 
                             "e.status=:status", Event.class);            
    q.setParameter("usr", usr);
    q.setParameter("datestart", d, TemporalType.DATE);
    q.setParameter("status", status);
    return q.getResultList();
}

Проблема в том, что я получаю пустой список, и когда я опускаю параметр даты в запросе, я получаю свои данные.

Я думаю, что это проблема с датой, поскольку способ, которым я запрашиваю, похож на 2013-03-20 00:00:00, а дата базы данных - на 2013-03-20 12:00:00.

1 ответ

Изменить запрос как
ВЫБРАТЬ e ИЗ события как e, где e.idusr=:usr AND cast(e.datestart as date) =:d AND e.status=:status Он пропустит время с заданной вами даты и вернет только дату.

Другие вопросы по тегам