Какой класс в Hibernate генерирует операторы SQL, которые регистрируются? - PullRequest
8 голосов
/ 27 июля 2011

У меня проблемы с ObjectNotFoundException, где Hibernate выполняет оператор select, где я тоже этого не ожидал, из-за ленивой загрузки, которая соответствует действительности. Я подозреваю, что что-то связано с AOP, но ничего не могу изменить, так как использую чужую среду.

Я думал о том, чтобы поместить точку останова в то место, где оператор SELECT генерируется в моем журнале, чтобы я мог видеть, кто его запускает. Для какого класса Hibernate я должен устанавливать контрольные точки?

Ответы [ 3 ]

6 голосов
/ 27 июля 2011

Я считаю, что запись в журнале создается в org.hibernate.jdbc.util.SQLStatementLogger

3 голосов
/ 27 июля 2011

Ад - это рамки других людей.Вы можете увидеть, как Hibernate регистрирует свой SQL, если вы сконфигурируете log4j для получения ведения журнала уровня отладки для org.hibernate.SQL и ведения журнала уровня трассировки для org.hibernate.type.Но генерация SQL в Hibernate происходит далеко от того, где она решает, что ей нужно делать, поэтому я сомневаюсь, что это поможет.У SessionImpl есть ActionQueue, в котором перечислены действия, которые Hibernate предпримет, вы можете посмотреть, что там показано.

2 голосов
/ 03 января 2017

Вплоть до строки Hibernate 3.6.x класс FQN был: org.hibernate.jdbc.util.SqlStatementLogger .

Начиная со строки 4.x, по крайней мере, до 5.2 класс: org.hibernate.engine.jdbc.spi.SqlStatementLogger

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