2015-08-20 34 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(); 

,但是这导致的休眠例外...

感谢所有帮助

编辑: CREATION_DATE举办的“2015年8月17日15时01分37秒”,但我想以DATE(creation_date)命令仅保留“2015-08-17”

回答

2

Hibernate标准API不知道底层DB的所有SQL函数。 你必须编写扩展hibernate org.hibernate.criterion.Order.class的自定义排序类。例如,检查this

(OR)更简单的,你可以在你的情况是这样

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

由于使用HQL,而不是标准的API,我已经扩展秩序类和这个作品真棒! – user3393203