Допустим, у вас есть класс с полем 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.
Как вы решили эту проблему?