我有一个网络应用程序托管在使用 hibernate (JPA) 和 JSF 构建的 glassfish 4 上,我想查看查询参数。
前段时间我可以看到这些参数,但我猜想当我从 hibernate 3.x 切换到 4.x 时,日志功能消失了。
所以我在我的 persistence.xml 中有:
<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.format_sql" value="true"/>
在我的 log4j.properties 中:
log4j.logger.org.hibernate=DEBUG
log4j.logger.org.hibernate.jdbc=trace
log4j.logger.org.hibernate.type= trace
事实是我可以看到查询,但我看到的不是参数而是问号。
我已经阅读了一些关于 hibernate4 使用 jboss 日志的事实,我添加了这个:
-Dorg.jboss.logging.provider=log4j
我在 glassfish 中的 jvm 参数,但仍然没有运气。 有什么想法吗?
最佳答案
尝试 setting up your application给你datasource-proxy在您的实际数据源前面。
数据源代理可以很好地拦截所有查询和日志参数。我在 on-line Hibernate training material 的所有示例中都使用了这种记录方法。 , 你可以在 GitHub 上查看配置
Query:{[
select
product0_.id as id1_18_1_,
product0_.code as code2_18_1_,
product0_.company_id as company_6_18_1_,
product0_.importer_id as importer7_18_1_,
product0_.name as name3_18_1_,
product0_.quantity as quantity4_18_1_,
product0_.version as version5_18_1_,
company1_.id as id1_6_0_,
company1_.name as name2_6_0_
from Product product0_
inner join Company company1_ on product0_.company_id=company1_.id
where product0_.id=?][1]
在方括号之间,您将找到 PreparedStatament 参数。它甚至在调用过程和函数时也有效。
关于java - hibernate 4 log4j 查看查询参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27505118/