2

在我的 Company 表中,我有 200 万行要获取并执行一些操作。我编写了一个服务类和一个提取 id 的方法。但默认情况下它只获取 100000 行。我查看了 Ebean 文档,但我找不到原因。

简化的服务类:

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 回答