3

我想知道如何将 HQL 查询转换为 sql 查询。我知道如果我们将 showsql = true 参数设置在我们可以获取 sql 查询但参数值不会附加其值。我需要找到方法打印日志中生成的 SQL 查询并用于我的性能优化。

提前致谢

4

2 回答 2

5

你可以在这里查看我的答案: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

于 2016-06-10T13:48:29.823 回答
0

Hibernate 使用方言进行特定优化。也许您可以扩展现有的 Oracle 方言之一或提供自己的方言。您可以通过继承 Oracle 方言来创建自定义方言。

于 2013-07-04T07:19:21.083 回答