2012-04-03 3 views
0

Мне нужны все записи, которые год занесен из критериев поиска.поиск запись с использованием критериев года в спящем режиме

для примера: String year = "2012";

В спящем режиме, как это работает?

criteria.add(Restrictions.like("createDate", "%"+year+"%")); 

createDate - выборка в формате DD-MM-YY из базы данных оракула.

Пожалуйста, предложите ..

+1

Является 'createDate' в Oracle' ДАТЫ '? Или 'VARCHAR2'? Если это «DATE», у него нет формата. Даты в Oracle всегда будут храниться в упакованном двоичном формате, который не читается человеком. –

+0

yes createDate в Oracle a DATE. он извлекается в формате DD-MM-YY. Но я хочу, чтобы запись поиска основывалась на полный год, как если бы я выбрал год 2011 или 2012 или 2009 год. существует ли какой-либо метод синтаксического анализа в спящем режиме? У меня есть и другие критерии, поэтому я не могу использовать sql-запрос. – Sweety

+0

Я не думаю, что есть какие-либо различия между вопросами, которые вы задаете вчера: http://stackoverflow.com/questions/9973730/hibernate-criteria-for-get-records-which-have-year-2012/9974789#9974789 . Они - одна и та же ИМО. –

ответ

2

Попробуйте что-то вроде:

criteria.add(Restrictions.sqlRestriction("to_char({alias}.CREATE_DATE, 'yyyy') = ?", year, Hibernate.STRING)); 

Я предполагаю, что имя столбца, отображенный на createDate является CREATE_DATE

+0

что я должен передавать в псевдониме? здесь создать дату может быть 01-10-12 или 02-12-08, как это .. – Sweety

+0

'Заполнитель {alias}, который будет заменен псевдонимом строки запрашиваемого объекта' см. здесь: http: //docs.jboss. org/hibernate/orm/3.3/reference/en/html/querycriteria.html (возможно, вы захотите попробовать его без части '{alias} .') –

+0

как @JustinCave сказал, что Oracle Date не имеет формат. Вы можете отформатировать его при преобразовании в строку с 'to_char', в моем ответе я взял только 4 цифры года с даты. Если вы запрашиваете дату (т. Е. В sqlplus), вы получаете ее как строку, отформатированную NLS_DATE_FORMAT, которая, вероятно, является «DD-MM-YY» в вашем случае, это не значит, что нет «четырехзначного года» –

Смежные вопросы