2

Company テーブルには、フェッチしていくつかの操作を実行したい 200 万行があります。ID を抽出するためのサービス クラスとメソッドを作成しました。ただし、デフォルトでは 100000 行しかフェッチされません。Ebean のドキュメントを調べましたが、理由がわかりません。

簡略化された Serviceclass:

public static List<Long> getAllIds(){   

    String sql = "select distinct c.id from Company c where c.state='PUBLISHED'";
    List<SqlRow> sqlRows =
            Ebean.createSqlQuery(sql).findList();

    Logger.info("Rows: "+sqlRows.size());               

    return new ArrayList<Long>(0);
}

私に与えます:

Rows: 100000

なんで?これを解決するにはどうすればよいですか?取得時に制限を設けたくありません。

4

1 に答える 1

2

setMaxRowsメソッドを呼び出すことで、返される最大の結果を設定できるようです。使用する数は、そのテーブルの行数を取得する別のクエリから取得する必要がある場合があります。

テストされていません...

public static List<Long> getAllIds(){   

    String sql = "select distinct c.id from Company c where c.state='PUBLISHED'";
    SqlQuery sqlQuery = Ebean.createSqlQuery(sql);    
    sqlQuery.setMaxRows(3000000);
    List<SqlRow> sqlRows = sqlQuery.findList();

    Logger.info("Rows: "+sqlRows.size());               

    return new ArrayList<Long>(0);
}
于 2012-12-11T16:24:35.510 に答える