2016-09-09 3 views
1

以下のハイバネートクエリを使用してデータベースから最後のレコードをフェッチしようとしています上記のHQLとエラー:org.hibernate.hql.internal.ast.ErrorCounter - 行1:45:予期しないトークン:テーブルから最後のレコードをフェッチするときのDESC

//fetch the last data from a field in a table 
Session session = _sessionFactory.getCurrentSession(); 
Query query = session.createQuery("select t.currentfile from file t DESC"); 
query.setMaxResults(1); 
List<Object[]> rows = query.list(); 

for (Object[] row: rows) { 
    System.out.println(" ------------------- "); 
    System.out.println("current file: " + row[0]); 
} 

私はこのエラーを取得しています:

ERROR: org.hibernate.hql.internal.ast.ErrorCounter - line 1:45: unexpected token 
: DESC 

間違っている可能性が何?

答えて

1

降順( 'DESC'または 'desc')および昇順( 'ASC'または 'asc')は、節での注文でのみ使用できます。

だからあなたのコードのようなものを見なければならないでしょう:

Query query = session.createQuery("select t.currentfile from file t 
    ORDER BY t.time_created DESC"); 

を(あなたがあなたのテーブルまたは何が降順にすることにより発注されていフィールドどのような追加されていないようtime_createdは一例フィールドです)

+0

これはcurrentfileカラムの最新のデータを私に与えるでしょう – Francis

+0

これはt.currentfileのパスを解決できません。予期しないトークンt – Francis

+0

は[Ljava.lang.Object;にキャストできません。 – Francis

0

あなたの質問は間違っています。 DESCの前にORDER BY yourSortAttributeを配置する必要があります。

+0

ソートするエンティティのフィールドです。 DESCは降順を意味します。結果をソートしたくない場合は、単にDESCを削除してください。 –

+0

session.createQuery( "t DESCによるファイルの順序からt.currentfileを選択"); – Francis

+0

は大丈夫です..... – Francis

関連する問題