0

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

澄清:我正在寻找一种 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
4

2 回答 2

0

您可以使用show_sql、format_sql 和 use_sql_comments在日志中获取实际的 sql 语句。将日志附加到文件并使用您选择的任何工具解析日志。现在,鲍勃是你的叔叔。

于 2013-05-11T21:47:59.813 回答
0

在persistence.xml中启用休眠统计

<property name="hibernate.generate_statistics">true</property>

然后使用SessionFactory.getStatistics()和访问必要的统计信息(可能getQueries())。

有关更多信息,请参阅此处此处的 Hibernate Statistics 文档或SO 上的此帖子

编辑

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

于 2013-05-11T21:29:17.323 回答