Сравнение только даты без времени с использованием именованного запроса JPA

В моей базе данных есть столбец DATE.

При создании объекта он создал поле Timestamp в классе объектов.

@Column(name="MY_DATE")
private Timestamp myDate;

Мой входящий объект - это объект java.util.Date. startDate и endDate.

Мне нужно написать запрос JPA, который будет извлекать записи с my_date между startDate и endDate. Он принимает во внимание время.

Условие запроса

o.myDate >=:inputDate AND o.myDate <=:inputDate

person Giovanny    schedule 17.11.2015    source источник
comment
Так в чем именно твоя проблема? Было бы полезно, если бы вы отправили весь запрос и ошибку, которую вы получаете при его выполнении (если она есть!)   -  person Bonifacio    schedule 17.11.2015
comment
Запрос использует время во внимание. как мне просто сравнить дату?   -  person Giovanny    schedule 17.11.2015
comment
О, понятно... Вы пробовали приведение функции DATE? ДАТА(o.myDate) ›=:inputDate И ДАТА(o.myDate) ‹=:inputDate. Вы также должны убедиться, что ваши параметры не используют время.   -  person Bonifacio    schedule 17.11.2015


Ответы (1)


Код вашей сущности генерируется автоматически? Возможно, вам следует попробовать обновить сгенерированный код Entity. Измените тип поля myDate на Date вместо java.sql.Timestamp. Затем аннотируйте его с помощью @Temporal и укажите DATE в качестве типа, как показано в коде ниже:

@Column(name="MY_DATE")
@Temporal(TemporalType.DATE)
private Date myDate;

В вашем запросе вы можете использовать BETWEEN вместо операторов сравнения:

o.myDate BETWEEN :startDate AND :endDate
person Ish    schedule 17.11.2015