Как игнорировать время в запросе даты с 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 Он пропустит время с заданной вами даты и вернет только дату.