Запрос JPA для дня без учета времени

Допустим, у вас есть класс с полем java.util.Date. Может быть, класс To do или класс планировщика событий.

@Temporal(TemporalType.TIMESTAMP)
private Date startTime;

Это будет отображаться в столбец datetime в MySQL.

Существуют варианты использования, когда вы хотите точно знать, когда это событие происходит. «Что намечено на 11 августа 2011 года в 20:00?»

Иногда вам просто нужно знать, какие мероприятия запланированы на конкретную дату. «Что запланировано на 11 августа 2011 г.?»

Если ваш JPAQL:

SELECT blah blah etc. WHERE ti.startTime = :d1

и параметр - экземпляр java.util.Date:

query.setParameter("d1", date, TemporalType.DATE);

ваши результаты будут ограничены датой, но также время.

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

Я бы предпочел не использовать хакерские хаки от конкретных производителей и не экспериментировать со строками /substrings.

Как вы решили эту проблему?

10
задан Gene De Lisa 27 August 2011 в 18:28
поделиться