2015-08-20 2 views
1

В моей дате я определил поле временной метки с именем «creation_date».
То, что я пытаюсь сделать, это есть запрос, как это:Дата спящего режима по порядку:

SELECT * FROM table_name ORDER BY date(creation_date) desc 

Мой код определяется как есть (соответствующие части только):

Session session = getHibernateTemplate().getSessionFactory().getCurrentSession(); 
Criteria crit = session.createCriteria(TableClass.class); 
crit.addOrder(Order.desc("date(creationDate)"); 
return crit.list(); 

, но это приводит к Hibernate исключение ...

Спасибо за любую помощь

EDIT: CREATION_DATE держит "2015-08-17 15:01:37", но я хочу заказывать DATE (creation_date) только «2015-08-17»

ответ

2

API-интерфейс Hibernate не знает всех функций SQL лежащего в основе БД. Вы должны написать собственный класс заказа, расширяющий hibernate org.hibernate.criterion.Order.class. Например, проверьте this.

(OR) проще вы можете использовать HQL в вашем случае вместо Criteria API, как этого

Session session = getHibernateTemplate().getSessionFactory().getCurrentSession(); 
Query query = session.createQuery("from TableClass order by date(creationDate) desc "); 
return query.list(); 
+0

Спасибо, я расширил класс Order и это работает удивительный! – user3393203

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