Использование MatchMode Hibernate для объекта Date - PullRequest
1 голос
/ 04 июля 2011

У меня есть объект Date для даты "26.12.2007", который я хочу сравнить с моей датой в моей базе данных MySQL "26.12.2007 12:00:00".Например, если я отправляю дату «26/12/2007», она должна получить значения против даты в базе данных MySQL.

Это работает, если я уберу это «12:00:00», но если я добавлю «12: 00: 00 "- это не дает результатов.

Я использую Hibernate Criteria, например

criteria.add(Restrictions.like("dateinsql", date));

Я пытался использовать

criteria.add(Restrictions.like("dateinsql", date,MatchMode.AnyWhere));

, но он работает только для String , а не Дата.

Какие-нибудь решения для этого?

1 Ответ

0 голосов
/ 04 июля 2011

По сути, вам необходимо переформатировать шаблон вашей переменной даты, то есть получить ее строковый формат в соответствии с указанным шаблоном даты, а затем преобразовать его обратно в объект даты. "dd MMM yyyy" - это формат, который работает в режиме гибернации.

попробуйте это: -

    GregorianCalendar calendar = new GregorianCalendar();
    calendar.setTime(your_input_date);
    calendar.add(Calendar.DATE, 1); // this is needed to if you want to deal with 12 hrs difference.

    SimpleDateFormat sdf    =   new SimpleDateFormat("dd MMM yyyy");
    Date formattedDate = sdf.parse(org.apache.commons.lang.time.DateFormatUtils.format(calendar.getTime(),"dd MMM yyyy"));

Используя эту форматированную дату,

criteria.add(Restrictions.like("dateinsql", formattedDate ));

должно работать нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...