有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java将HQL转换为SQL查询

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

提前谢谢


共 (2) 个答案

  1. # 1 楼答案

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

  2. # 2 楼答案

    Hibernate使用dialects进行特定的优化。也许你可以扩展现有的甲骨文方言或提供自己的。您可以通过子类化Oracle方言来创建自定义方言