无需hibernate_show_sql = true即可将Hql转换为Sql查询 [英] Convert Hql to Sql Query without hibernate_show_sql=true
本文介绍了无需hibernate_show_sql = true即可将Hql转换为Sql查询的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我执行以下HQL并正确执行
String hql =FROM Employee;
Query query = session.createQuery(hql);
列表结果= query.list();
现在我还想在日志中为后端日志生成支持用户的SQL,我想请使用QueryTranslator请告诉我如何为相应的HQL生成sql请告知如何实现这一点。 您可以使用hibernate QueryTranslator:
字符串hqlQueryString = hqlQuery.getQueryString();
ASTQueryTranslatorFactory queryTranslatorFactory = new ASTQueryTranslatorFactory();
SessionImplementor hibernateSession = entityManager.unwrap(SessionImplementor.class);
QueryTranslator queryTranslator = queryTranslatorFactory.createQueryTranslator(,hqlQueryString,java.util.Collections.EMPTY_MAP,hibernateSession.getFactory());
queryTranslator.compile(java.util.Collections.EMPTY_MAP,false);
String sqlQueryString = queryTranslator.getSQLString();
I am executing the following HQL and it is executing properly
String hql = "FROM Employee";
Query query = session.createQuery(hql);
List results = query.list();
Now i also want to log the sql generated at the backend in logs for support users , I want to make use of QueryTranslator please advise how can I generate the sql for corresponding HQL please advise how to achieve this.
解决方案
You can use hibernate QueryTranslator:
String hqlQueryString = hqlQuery.getQueryString();
ASTQueryTranslatorFactory queryTranslatorFactory = new ASTQueryTranslatorFactory();
SessionImplementor hibernateSession = entityManager.unwrap(SessionImplementor.class);
QueryTranslator queryTranslator = queryTranslatorFactory.createQueryTranslator("", hqlQueryString, java.util.Collections.EMPTY_MAP, hibernateSession.getFactory());
queryTranslator.compile(java.util.Collections.EMPTY_MAP, false);
String sqlQueryString = queryTranslator.getSQLString();
这篇关于无需hibernate_show_sql = true即可将Hql转换为Sql查询的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文