在我的数据库中,我定义了一个名为“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异常......
感谢您的帮助
编辑: creation_date持有“2015-08-17 15:01:37”但我想在DATE(creation_date)订购只保留“2015-08-17”
答案 0 :(得分:2)
Hibernate条件API并不了解底层数据库的所有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();