将HQL转换为SQL查询

时间:2013-07-04 07:12:41

标签: java sql hibernate java-ee

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

提前致谢

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

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