从hibernate获取SQL获取

时间:2013-05-11 19:44:38

标签: java sql hibernate

有没有办法从session.get(class name, id)电话中获取SQL查询?我之前看过这篇文章:How to get SQL from Hibernate Criteria API (*not* for logging)但它不包括获取查询。

澄清:我正在寻找一种API方法来获取查询字符串,而不是查询日志。换句话说,我问的是有一种方法(如下面的toSql)而不是:

Foo foo = session.get(Foo.class, id);

我可以这样说:

String sqlOrHql = session.get(Foo.class, id).toSql();
// execute sqlOrHql to get foo, either through hibernate or manually using JDBC

2 个答案:

答案 0 :(得分:0)

persistence.xml

中启用Hibernate Statistics
<property name="hibernate.generate_statistics">true</property>

然后使用SessionFactory.getStatistics()并访问必要的statiscits(可能是getQueries())。

有关详细信息,请参阅Hibernate Statistics文档hereherethis post on SO

修改

如果您想在没有记录的情况下执行此操作,则必须使用JDBC驱动程序代理,例如log4jdbcp6spyjdbc-trace-wrapper

答案 1 :(得分:0)

您可以使用show_sql, format_sql, and use_sql_comments在日志中获取实际的sql语句。 Append the log to a fileparse the log使用您选择的任何工具。现在,鲍勃是你的叔叔。