首页 > 解决方案 > 使用 LIMIT AND OFFSET 时,H2 嵌入式数据库不返回正确的结果

问题描述

我正在使用以下查询对表格进行分页。

select * 
from TABLE_NAME 
LIMIT 4 OFFSET 10

我的桌子有 12 行。当我从 Squirrel 运行此查询时,它会返回响应,但是当我使用 JDBC 连接来获取它时,它不会返回数据。

如果我使用 LIMIT AS 14 AND OFFSET 4,相同的查询可以正常工作。(我的 JDBC 没有问题)。

Java代码:

List<DataPoolEntity> list = new ArrayList<>();
try {

    String fetch = "select * from TABLENAME LIMIT " + limit + " OFFSET " + offset;


    java.sql.PreparedStatement stmt = conn.prepareStatement(fetch);

    java.sql.ResultSet result = stmt.executeQuery();

    list = generateDataPoolEntityList(result); (custom code) - ignore this
    result.close();
    stmt.close();
    return list;
} catch (SQLException e) {
    e.printStackTrace();
}
return null;

标签: javajdbch2

解决方案


Order by应该是之前limit请参阅规范


推荐阅读