2

是否可以在使用 Java 语言从 Hibernate 执行 UPDATE 时获取本机 SQL 查询?

例如,我有

session.update(something);

语句,我想检索一个String(或其他)包含 UPDATE 操作后面的 SQL 查询的内容。


我想要 Hibernate “发送”到 MySQL 的有效查询。

4

3 回答 3

3

你可以。Hibernate 正在使用 log4j,因此您必须设置适当的类别。那些是:

org.hibernate.SQLdebug

org.hibernate.typetrace

另请参阅:使用 Hibernate 时如何打印带有参数值的查询字符串

于 2013-05-14T11:28:55.123 回答
2

你有两个选择...

  • 您可以<property name="show_sql">true</property>在您的persistance.cfg.xml 中进行设置,但这不会显示参数中的值,只是?

  • 您可以(我的首选)使用 SQL 分析器(如果您使用的是 MS SQL)来准确查看针对数据库运行的 SQL。

于 2013-05-14T10:24:24.687 回答
1

以编程方式获取查询是不可能的(或者至少在没有为特定数据库编码的情况下是不可能的):SQL 查询取决于您使用 hibernate 与之交互的数据库,并且通常不能通过 hibernate 直接访问,因为它取决于数据库驱动程序。

查看实际 SQL 语句的最佳方法是查看数据库的日志文件。

于 2013-05-14T10:21:40.443 回答