次のクエリを使用して、次の結果を取得しています。
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]);
}