Я запускаю Tomcat 9.0 с базой данных PostgreSQL 10.2, используя пул JDBC Tomcat, настроенный с помощью org.postgresql.Driver.
У меня есть следующий простой запрос, который просматривает небольшую справочную таблицу для значений:
SELECT DISTINCT quality_rank, quality_desc
FROM flooring_quality_type
ORDER BY quality_rank
В таблице ровно 3 строки, и инструмент запросов pgAdmin возвращает те же самые 3 строки независимо от используемого ключевого слова DISTINCT.
Я использую SQL в следующем коде, чтобы добавить значения в список (в настоящее время не использую столбец rank, до того, как я использовал 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?