简体   繁体   English

使用Hibernate Criteria从日期中选择不同的年份

[英]Select distinct year from date using Hibernate Criteria

I would like to get all distinct years from a MySQL date field with the Hibernate Criteria API. 我想通过Hibernate Criteria API从MySQL日期字段中获取所有不同的年份。 This is the query that I want to translate to criteria: 这是我要转换为条件的查询:

sess.createQuery("SELECT DISTINCT year(o.date) FROM Observation");

I've tried : 我试过了 :

Criteria crit = sess.createCriteria(Observation.class)
    .setProjection(Projections.distinct(Projections.property("year(date)")));

But it returns an error 但它返回一个错误

ERROR - could not resolve property: year(date) of: ca.ogsl.biodiversity.hibernate.Observation 错误 - 无法解析属性:年(日期):ca.ogsl.biodiversity.hibernate.Observation

Does any body knows if it's possible and how? 有没有人知道它是否可能以及如何?

Thanks a lot!!! 非常感谢!!!

Keven 凯文

尝试使用sql投影,因此您可以使用任何SQL表达式:

criteria.setProjection(Projections.sqlProjection( "yeard(DATE_COLUMN_NAME) as year", new String[] {"year"}, new Type[] {StandardBasicTypes.INTEGER} ));  

使用DISTINCT关键字查询不同年份,而不是查看所有年份并尝试在Java代码中过滤它们。

SELECT DISTINCT year(o.date) FROM Observation;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM