我想知道如何将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