有没有办法从 Hibernate Criteria
获取(待生成的)SQL?
理想情况下,我会有类似的东西:
Criteria criteria = session.createCriteria(Operator.class);
... build up the criteria ...
... and then do something like ...
String sql = criteria.toSql()
(But this of course does not exist)
然后这个想法是使用 SQL 作为一个巨大的“MINUS”查询的一部分(我需要找到 2 个相同模式之间的差异 - 结构相同,而不是数据 - 并且 Hibernate 不支持 MINUS)
(顺便说一句,我知道我可以从日志文件中检查 SQL)
原文由 David Bulté 发布,翻译遵循 CC BY-SA 4.0 许可协议
我已经使用 Spring AOP 完成了类似的事情,因此我可以获取应用程序中运行的任何查询的 sql、参数、错误和执行时间,无论它是 HQL、Criteria 还是本机 SQL。
这显然是脆弱的、不安全的,可能会随着 Hibernate 等的变化而中断,但它说明了获取 SQL 是可能的:
将整个内容包装在 try/catch 中,使用风险自负。