如何从ResultSet重构SQL查询

时间:2010-07-13 18:59:39

标签: java hibernate jboss

在一个hibernate查询中的JBoss内部某处我正在捕获一个错误,让我得到一个ResultSet。此代码是插入的自定义数据类型。

如果我可以简单地执行rs.getStatement()。toString()并完成它,那将是很好的,但遗憾的是,它并没有泄露任何有关进入它的sql语句。

我在想((PreparedStatement)rs.getStatement())。getMetaData()。

我真希望hibernate在遇到错误时能提供更多信息。 有没有人有一个很好的解决方案来帮助揭示异常发生时使用的哪个表和哪个列?

3 个答案:

答案 0 :(得分:2)

通过将hibernate.show_sql属性设置为true,只需在Hibernate配置属性中启用SQL日志记录。

这比检查结果集元数据更可靠,因为where子句不可用。

答案 1 :(得分:1)

调试Hibernate的一种方法是打开详细的日志记录。

例如,您可以通过打开org.hibernate.SQL的日志记录来记录执行时的所有SQL语句。从这里开始,您应该能够缩小在异常之前执行的最后一个语句。

Documentation can be found here

答案 2 :(得分:0)

获取ResultSet的MetaData将不允许您获取传入的信息。在Hibernate中,您可以将语句输出到日志文件中。

大多数JDBC驱动程序允许您设置跟踪,以便您可以进行调试。