java - hibernate 4 log4j 查看查询参数

标签 java hibernate jpa orm log4j

我有一个网络应用程序托管在使用 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/

相关文章:

java - 如何修复使用RestTemplate访问微服务时出现org.springframework.web.client.HttpClientErrorException : 400 null,错误

java - android NoClassDefFounderror

Java 快速排序

java - 连接在不活动时间后挂起

java - 由于@OneToMany,JPA 更新记录失败

java - Java 按时间间隔运行循环

java - hibernate 搜索 : Store List of Children and retrieve via projection

java - hibernate xml配置似乎不起作用

java - Spring ACL 使用 JPA,但 ACL 实现是 JDBC。两种方式

java - 带有 DynamoDB 和 MySQL 双数据源的 Spring Data/JPA 存储库