我想使用Hibernate 6从CriteriaQuery获取SQL字符串。
- Query.getQueryString()在
CriteriaQuery
的Hibernate 6中不再起作用。 SQLExtractor.from()
也不起作用,因为它只是使用反射来调用Query.getQueryString()- 如何从Hibernate Criteria API获取SQL(not for logging)仅适用于最高5的Hibernate版本。
- 在我的用例中,记录SQL语句是不够的。我需要将它们存储在一个字符串中以便处理。
有什么想法吗?
2条答案
按热度按时间dl5txlt91#
这是Hibernate团队在版本6中的一个有意的设计决定,因为Hibernate迁移到了semantic query model。我在下面的代码中找到了一个解决方法。值得注意的是,该方法返回的HQL格式自Hibernate 5以来略有变化:
你也可以在Hibernate JIRA ticket中看到关于这个问题的一些讨论。
ivqmmu1c2#
SQLExtractor的库已更改:https://github.com/vladmihalcea/hypersistence-utils