如何通过JBOSS日志调试SQL查询?

时间:2014-07-30 20:12:27

标签: postgresql jpa jboss7.x

我正在使用JPA hibernate和postgres。尝试在javax.persistence.Query上运行getResultList()时出现问题。该查询很小,大约10行,但是在两个表的每一个中都有连接和大约80列,它查询它到大约200行JBOSS日志。像下面的东西。

15:47:05,908 INFO  [stdout] (Thread-11 (HornetQ-client-global-threads-507424984)) Hibernate: 
15:47:05,910 INFO  [stdout] (Thread-11 (HornetQ-client-global-threads-507424984))     select
15:47:05,911 INFO  [stdout] (Thread-11 (HornetQ-client-global-threads-507424984))         tablename0_.some_field_name as auto_genrated_field_name,
....
15:47:06,255 WARN  [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] (Thread-11 (HornetQ-client-global-threads-507424984)) SQL Error: 0, SQLState: 42883
15:47:06,256 ERROR [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] (Thread-11 (HornetQ-client-global-threads-507424984)) ERROR: operator does not exist: character varying ~~ integer
Hint: No operator matches the given name and argument type(s). You might need to add explicit type casts.
Position: 7236

如图所示,日志并没有告诉我究竟哪个字段名称类型转换有问题,而只是它认为错误的字符位置。根据缩进和hibernate格式化我的查询的方式,我不能确定它指的是哪个变量。我实际上尝试将这个确切的查询日志放到编辑器上,然后带我到那个角色位置,但我不确定我是否正在寻找正确的位置。在创建查询时,我还查看了Eclipse调试器并且参数类型匹配。

JBOSS日志中是否有任何开关,或配置能够准确地告诉我哪个字段出错了。

1 个答案:

答案 0 :(得分:0)

您可以尝试使用此处提供的解决方案: How to view the SQL queries issued by JPA?

您是否查看了PostgreSQL日志?默认情况下会记录导致错误的语句。