0

1000レコードを含むテーブルがあります。

一度に100レコードをプルする必要があったのでsetFetchSize、以下のように休止状態の基準で使用しました(Dealエンティティオブジェクトです)

 List<Deal> dealList= sess.createCriteria(Deal.class).setFetchSize(100).list();

しかし、上記のクエリの後、dealListサイズを 次のように印刷すると

System.out.println("no. of deals "+dealList.size());

100レコードではなく1000レコードになりました。

私は何かを逃しましたか?

4

3 に答える 3

3

setMaxResults()が必要になります。

フェッチサイズはJDBCの最適化であり、実行されるクエリの制限ではありません。との詳細についてはこのスレッド、2つがどのように連携するかについてはこのスレッドを参照してください。setFetchSize()setMaxSize()

于 2012-11-06T13:15:50.417 に答える
0

次のレコードを取得するためにsetMaxResultswithを使用します。setFirstResult

アップデート

java.sql.Statement#setFetchSizejavadocから:

ResultSetこれによって生成されたオブジェクトにさらに行が必要な場合に、データベースからフェッチする必要がある行数に関するヒントをJDBCドライバーに 提供しますStatement。指定された値がゼロの場合、ヒントは無視されます。デフォルト値はゼロです。

于 2012-11-06T13:15:10.873 に答える
0

setMaxResults(100)フェッチされる行数を100に制限するために使用します

于 2012-11-07T06:41:45.697 に答える