Java 使用Hibernate条件选择与日期不同的年份
我希望使用Hibernate Criteria API从MySQL日期字段中获取所有不同的年份。这是我要转换为条件的查询:Java 使用Hibernate条件选择与日期不同的年份,java,mysql,hibernate,Java,Mysql,Hibernate,我希望使用Hibernate Criteria API从MySQL日期字段中获取所有不同的年份。这是我要转换为条件的查询: sess.createQuery("SELECT DISTINCT year(o.date) FROM Observation"); 我试过: Criteria crit = sess.createCriteria(Observation.class) .setProjection(Projections.distinct(Projections.property
sess.createQuery("SELECT DISTINCT year(o.date) FROM Observation");
我试过:
Criteria crit = sess.createCriteria(Observation.class)
.setProjection(Projections.distinct(Projections.property("year(date)")));
但它返回一个错误
错误-无法解析属性:年(日期):ca.ogsl.biodity.hibernate.Observation
有人知道这是否可能,以及如何做到吗
非常感谢
Keven使用
DISTINCT
关键字查询不同的年份,而不是获取所有年份并尝试在Java代码中过滤它们
SELECT DISTINCT year(o.date) FROM Observation;
尝试使用sql投影,以便可以使用任何sql表达式:
criteria.setProjection(Projections.sqlProjection( "yeard(DATE_COLUMN_NAME) as year", new String[] {"year"}, new Type[] {StandardBasicTypes.INTEGER} ));
组。。。代码裁剪错误。。。第一篇文章编辑。谢谢你的警告。。。现在,我希望通过使用条件得到相同的结果。有什么想法吗?很好,我还想计算发生的次数,所以我用sqlGroupProjection:Projections.sqlGroupProjection(“year(DATE_列)为y”,“y”,新字符串[]{“y”},新类型[]{StandardBasicTypes.INTEGER})替换了sqlProjection,效果非常好!非常感谢!