Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用Hibernate条件选择与日期不同的年份_Java_Mysql_Hibernate - Fatal编程技术网

Java 使用Hibernate条件选择与日期不同的年份

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

我希望使用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.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,效果非常好!非常感谢!