Hibernate组按名称生成结果,然后获取最新日期

时间:2012-10-26 16:51:08

标签: java mysql hibernate

我正在使用以下查询来检索以下结果。

List<TranslationStyleSheet> results = this.session.createCriteria(TranslationStyleSheet.class).list();

File_Name     Create_Date TimeStamp

PDF Version | 10/1/2012
PDF Version | 10/2/2012
PDF Version | 10/10/2012
TXT Version | 9/2/2012
DOC Version | 9/31/2012
DOC Version | 10/5/2012

从那里我只需要返回最新的文件名,不包括旧的结果。

示例

File_Name     Create_Date TimeStamp

PDF Version | 10/10/2012
TXT Version | 9/2/2012
DOC Version | 10/5/2012

我尝试了以下代码但没有成功。

List<TranslationStyleSheet> results = this.session.createCriteria(TranslationStyleSheet.class)
            .setProjection(Projections.projectionList()
            .add(Projections.groupProperty("fileName"))
            .add(Projections.max("createDate")))
            .list();

有人知道怎么做到这一点吗?我首先得到一个例外[Ljava.lang.Object;无法转换为org.mycompany.test.entities.TranslationStyleSheet

当我迭代结果时,我只得到一个作为回报。

更新

我能够通过以下查询使过滤正常工作,但是我不知道如何返回一个TranslationStyleSheet obj而不仅仅是它的一部分。

查询

List results = this.session.createCriteria(TranslationStyleSheet.class)
            .setProjection(Projections.projectionList()
            .add(Projections.groupProperty("fileName"))
            .add(Projections.max("createDate")))
            .list();

    List<Object[]> objs = results;

    for (Object[] obj : objs ) {
        System.out.println(obj[0] + " " + obj[1]);
    } 

1 个答案:

答案 0 :(得分:0)