我正在运行带有 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 代码有问题吗?