我想知道如何将 HQL 查询转换为 sql 查询。我知道如果我们将 showsql = true 参数设置在我们可以获取 sql 查询但参数值不会附加其值。我需要找到方法打印日志中生成的 SQL 查询并用于我的性能优化。
提前致谢
我想知道如何将 HQL 查询转换为 sql 查询。我知道如果我们将 showsql = true 参数设置在我们可以获取 sql 查询但参数值不会附加其值。我需要找到方法打印日志中生成的 SQL 查询并用于我的性能优化。
提前致谢
你可以在这里查看我的答案:https ://stackoverflow.com/a/37749916/1350643
简而言之,您可以使用以下代码将 hql 转换为 sql:
QueryTranslatorFactory translatorFactory = new ASTQueryTranslatorFactory();
SessionFactoryImplementor factory = (SessionFactoryImplementor) getSessionFactory();
QueryTranslator translator = translatorFactory.
createQueryTranslator(hqlQueryText, hqlQueryText, Collections.EMPTY_MAP, factory);
translator.compile(Collections.EMPTY_MAP, false);
translator.getSQLString();
来源: http: //narcanti.keyboardsamurais.de/hibernate-hql-to-sql-translation.html
Hibernate 使用方言进行特定优化。也许您可以扩展现有的 Oracle 方言之一或提供自己的方言。您可以通过继承 Oracle 方言来创建自定义方言。