У меня есть запрос, который имеет 4 левых соединения по 4 различным таблицам.
Когда я запускаю этот запрос в рабочей среде со счетчиком (), он возвращает 2, что является ожидаемым значением. Тот же запрос при выполнении через мой код возвращает 3000, то есть count (), поскольку rowCount имеет значение 3000.
Кто-нибудь здесь сталкивался с подобными проблемами?
Шаги отладки -
- В режиме отладки я скопировал запрос, созданный в Preparedstatement, и запустил его в рабочей среде MySQL. Возвращает 2, что правильно.
Есть ли какие-либо предложения относительно других способов устранения этой проблемы?
В целях конфиденциальности я не могу вставить запрос сюда
Редактировать:
int totalCount = 0;
StringBuilder queryBuilder = new StringBuilder(query.replace(QueryConstants.SELECT, QueryConstants.SELECT_COUNT));
try(Connection connection = dataSource.getConnection();
PreparedStatement countStatement = connection.prepareStatement(queryBuilder.toString());
ResultSet resultSet = countStatement.executeQuery()) {
while(resultSet.next()) {
totalCount = resultSet.getInt(1);
}
pageDetailsDTO.setTotal(totalCount);
Итак, что я пытаюсь достичь, это то, что сначала я выполню подготовленное состояние с LIMIT и OFFSET и получу набор результатов.
Во-вторых, передавая тот же readyStatement, что и String, я вызову вышеуказанную логику внутри метода с именем getTotalCount (String query, PageDetailsDTO pageDetailsDTO) , чтобы узнать количество записей, которые были возвращены без LIMIT и OFFSET. Это общее количество для целей нумерации страниц.
Поэтому я буду заменять Select на Select count () как rowCount *.