我希望通过Hibernate Criteria API从MySQL日期字段中获取所有不同的年份。这是我要转换为条件的查询:
sess.createQuery("SELECT DISTINCT year(o.date) FROM Observation");
我试过了:
Criteria crit = sess.createCriteria(Observation.class)
.setProjection(Projections.distinct(Projections.property("year(date)")));
但它返回错误
错误 - 无法解析属性:年(日期):ca.ogsl.biodiversity.hibernate.Observation
是否有人知道这是否可能以及如何?
非常感谢!!!
凯文
答案 0 :(得分:2)
尝试使用sql投影,因此您可以使用任何SQL表达式:
criteria.setProjection(Projections.sqlProjection( "yeard(DATE_COLUMN_NAME) as year", new String[] {"year"}, new Type[] {StandardBasicTypes.INTEGER} ));
答案 1 :(得分:0)
使用DISTINCT
关键字查询不同的年份,而不是花费所有年份并尝试在Java代码中过滤它们。
SELECT DISTINCT year(o.date) FROM Observation;