Журнал аудита Hibernate SQL - PullRequest
3 голосов
/ 06 марта 2009

Я хочу сделать журнал аудита сгенерированных операторов SQL в Hibernate. Я написал Custom Interceptor, который расширяет EmptyInterceptor. Я переопределил onPrepareStatement метод, чтобы получить сгенерированный SQL. Но когда я отлаживаю этот код, я получаю только сгенерированный SQL без таких параметров.

INSERT INTO TableA(Col1,Col2,Col3) VALUES(?,?,?)

Как получить полный оператор SQL, содержащий значения параметров, подобные этому, из Hibernate

INSERT INTO TableA(Col1,Col2,Col3) VALUES("Value1","Value2","Value3")

Ответы [ 4 ]

2 голосов
/ 25 июня 2009

Принятый ответ не сработал (Postgres версия 8.3.7-1, версия драйвера 8.1-407).

Мне также пришлось установить опцию "type" в DEBUG в конфигурации регистрации:

log4j.logger.org.hibernate.type=DEBUG
2 голосов
/ 06 марта 2009

В hibernate cfg вы можете установить для свойства hibernate.show_sql значение true, что приведет к тому, что Hibernate выведет обработанные операторы (без значений параметров, связанных с запросом) в стандартный вывод.

Чтобы в журнале регистрировались предварительно скомпилированные операторы и список связанных с ними параметров, установите log4j.logger.org.hibernate.SQL = DEBUG в конфигурации регистрации общего доступа (или базовой системы журналов).

0 голосов
/ 12 октября 2012

Как насчет использования одной из множества "оболочек JDBC", предназначенных для этого?

В произвольном порядке:

  1. P6Spy - http://sourceforge.net/projects/p6spy/
  2. log4jdbc - http://code.google.com/p/log4jdbc/
  3. JDBCLogger - http://jdbclogger.sourceforge.net/
  4. и многое, многое другое
0 голосов
/ 12 октября 2012

Похоже, в зависимости от вашей версии log4j это все еще ошибка

https://hibernate.onjira.com/browse/HHH-2835

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...