Hibernate中的哪个类生成记录的SQL语句?

时间:2011-07-27 10:06:40

标签: hibernate debugging

我遇到了ObjectNotFoundException的问题,其中Hibernate似乎正在执行select语句,我也没想到它,因为延迟加载是真的。我怀疑与AOP有关,但我不能改变任何东西,因为我正在使用其他人的框架。

我正在考虑在我的日志中生成select语句的位置放置一个断点,这样我就可以看到谁在触发它。什么是Hibernate类我应该设置断点?

3 个答案:

答案 0 :(得分:6)

我相信日志条目是在org.hibernate.jdbc.util.SQLStatementLogger

中生成的

答案 1 :(得分:3)

地狱是其他人的框架。如果配置log4j以获取org.hibernate.SQL的调试级日志记录和org.hibernate.type的跟踪级日志记录,则可以看到Hibernate记录其SQL。但是Hibernate的SQL生成在很大程度上决定了它需要做什么,所以我怀疑这会有所帮助。 SessionImpl有一个ActionQueue,列出了Hibernate将采取的操作,你可能想看看那里显示的内容。

答案 2 :(得分:2)

直到Hibernate行3.6.x,类FQN为:org.hibernate.jdbc.util.SqlStatementLogger

从第4.x行开始,至少等到5.2该课程为:org.hibernate.engine.jdbc.spi.SqlStatementLogger