2011-02-15 8 views
1

Hibernate Criteriaクエリを記述して、DB2の選択肢の最初の10行だけを降順で並べ替える方法。DB2のHibernate基準

in Db2:従業員表20のレコードには1から20までの開始レコードがあります。

私は、クエリの下に実行する場合:

Select empname from emp order by desc empno fetch first 10 rows only. 

実際の出力は次のようになります。10,9 ...、1。しかし、DB2ではそれをretunrs 20,19 .... 11。

ご意見がありがとうございます。ここで

よろしく、

ラジ

+0

DB2は質問とどのように関連していますか? – skaffman

+0

@Skaffman:はい、Db2データベースに関連しています。 – user569125

+0

クエリーは、DB2に求めているものとまったく同じです:empnoで従業員を注文してから、20,19 ... 11の最初の10を選択するように求めています。あなたの質問は何ですか? 10,9、... 1を返すクエリが必要ですか?これをHibernate Criteriaクエリに変換する必要がありましたか? –

答えて

2

あなたが降順で最初の10行を返す休止基準クエリを作成する方法です。

Critieria crit = session.createCriteria(Employee.class); 
crit.addOrder(Order.desc("empno"); 
crit.setMaxResults(10); 
List<Employee> emps = crit.list(); 

は、これが返されることに注意してください従業員はempnoに基づいて降順に従っているので、20,19、... 11のようなempnoの結果セットを返します。これは、基礎となるデータベースに関係なく、あなたが求めていることを私が知ることができる限り、それがするべきものです。

実際に10,9、... 1(技術的には降順の最初の10行ではありません)としたい場合は教えてください。

編集: あなたはそれが10,9、... 1になりたい場合は、私が個人的にちょうど昇順にソートする基準を変更します。注文は...、9,10 1になりますが、効果は同じです。

crit.addOrder(Order.asc("empno")); 

は、あなたが本当にあなたがそれにもかかわらず次の操作を行う追加することができ、... 1それは10,9になりたい場合はあなたが持っているデータに依存するようになります。それはすべてあなたがデータを使って何をしようとしているかにかかっていますが、これらはあなたを正しい道に導きます。

Critieria crit = session.createCriteria(Employee.class); 
crit.addOrder(Order.desc("empno"); 
crit.setFirstResult(10); 
crit.setMaxResults(10); 
List<Employee> emps = crit.list(); 
+0

ありがとうございます。この10,9、... 1をこの注文したいです。 – user569125

+0

私は20のレコードを持っています、最初は1 ... 10レコードを表示します。ソートすると10を表示します。1.秒:次のボタンの条件をクリックすると11が表示されます... 20.ここでこのシナリオに基づいて、上記のコードが変更されます。 – user569125

関連する問題