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 にキャストできません

結果を反復すると、返されるのは 1 つだけです。

アップデート

次のクエリでフィルタリングを適切に機能させることができましたが、TranslationStyleSheet オブジェクトの一部ではなく、それを返す方法がわかりません。

クエリ

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

orderBy を実行しても問題は解決しませんか?

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 に答える