Одной вещью, которая всегда была боль, является регистрация ошибок SQL (JDBC), когда у вас есть PreparedStatement, а не сам запрос.
Вы всегда получаете сообщения вроде:
2008-10-20 09:19:48,114 ERROR LoggingQueueConsumer-52 [Logger.error:168] Error
executing SQL: [INSERT INTO private_rooms_bans (room_id, name, user_id, msisdn,
nickname) VALUES (?, ?, ?, ?, ?) ON DUPLICATE KEY UPDATE room_id = ?, name = ?,
user_id = ?, msisdn = ?, nickname = ?]
Конечно, я мог бы написать вспомогательный метод для извлечения значений и разбора/подстановки вопросительных знаков с реальными значениями (и, вероятно, пойдет по этому пути, если я не получу результат этого вопроса), но я просто хотел знать, была ли эта проблема разрешена ранее кем-то другим и/или если есть какой-то общий помощник по протоколированию, который бы сделал это автоматически для меня.
Отредактировано после нескольких ответов:
Библиотеки, предоставленные до сих пор, по-видимому, подходят для регистрации операторов для отладки, что, без сомнения, полезно. Тем не менее, я ищу способ сделать сам PreparedStatement (а не некоторый подкласс) и регистрировать его SQL-инструкцию всякий раз, когда возникает ошибка. Мне не хотелось бы развертывать производственное приложение с альтернативной реализацией PreparedStatement.
Я предполагаю, что я ищу класс утилиты, а не специализацию PreparedStatement.
Спасибо!