0

我正在运行带有 PostgreSQL 10.2 数据库的 Tomcat 9.0,使用配置了 org.postgresql.Driver 的 Tomcat JDBC 池。

我有以下简单查询,它扫描一个小的参考表以获取值:

SELECT DISTINCT quality_rank, quality_desc 
  FROM flooring_quality_type 
ORDER BY quality_rank

该表正好有 3 行,而 pgAdmin 查询工具返回相同的 3 行,而不管使用的是 DISTINCT 关键字。

我在以下代码中使用 SQL 将值添加到列表中(在我使用 putIfAbsent 和地图来绕过错误之前,目前不使用排名列)。

String QUALITIES_SQL = "SELECT DISTINCT quality_rank, quality_desc " + 
    " FROM flooring_quality_type ORDER BY quality_rank";

try (Connection con = DataSourceKeeper.getConnection();
     PreparedStatement mapStmt = con.prepareStatement(PRICE_MAP_SQL); // Another query, not exhibiting problem
     PreparedStatement qualStmt = con.prepareStatement(QUALITIES_SQL)) {

    try (ResultSet qualRs = mapStmt.executeQuery()) {
        while (qualRs.next()) {
            System.out.println("Got another result");
            qualities.add(qualRs.getString("quality_desc"));
        }
    }

    // Other query executed here ... SNIP
    // The mapStmt does not cause the same issue, but uses joins.
    // Problem occurs regardless of the order of statement execution.

} catch (SQLException e) {
    throw new UserFacingException();
}

我正在查看列表的 JSON 输出以及打印的消息。虽然表格有 3 行,但我可以看到 12 个条目。它们按 3 个不明确的组排序,就好像查询按顺序重复了 4 次,返回到同一个 ResultSet。

知道是什么原因造成的以及如何解决吗?我的 JDBC 代码有问题吗?

4

1 回答 1

0

HoneyboyWilson 发现了问题。调用了错误的语句,但它包含正确的列,因此没有产生任何异常。

于 2018-02-20T00:28:20.257 回答