0

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

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]);
    } 
4

1 回答 1

0

不会下订单解决您的问题吗?

http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/querycriteria.html#querycriteria-ordering

addOrder(Order.desc("date"))
于 2012-10-26T16:57:13.423 回答