【发布时间】:2011-02-01 23:17:16
【问题描述】:
如果我设置
<property name="show_sql">true</property>
在控制台的hibernate.cfg.xml配置文件中,我可以看到SQL。
但这不是真正的 SQL...我可以看到将直接传递给数据库的 SQL 代码吗?
例子:
我明白了
select this_.code from true.employee this_ where this_.code=?
我可以看看
select employee.code from employee where employee.code=12
真正的 SQL?
【问题讨论】:
-
Hibernate 在内部使用准备好的语句,因此它永远不会以将嵌入它们的值的格式提供 SQL
-
真的是
true.employee吗? -
我找到的唯一可行的解决方案是:mkyong.com/hibernate/…
-
与这里写的相反,我还没有找到这个问题的答案:Print query string in hibernate with parameter values。
-
@NicolasBarbulesco 带问号的版本是真正的 SQL。所有 JDBC 驱动程序都可以接受这种格式的查询。在底层,JDBC 驱动程序可能会重新格式化查询以匹配 DB 的原生占位符格式(例如,Oracle 和 PostgreSQL 会将
?替换为:1、:2等),并且在某些特定情况下,它可能会替换使用转义值绑定占位符(一些 MySQL 驱动程序这样做)。但是,大多数数据库都能够原生处理带有占位符的查询。