如何以编程方式将HQL转换为SQL查询(无日志记录) [英] How to convert HQL to SQL Query programmatically (without logging)

查看:86
本文介绍了如何以编程方式将HQL转换为SQL查询(无日志记录)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在执行以下HQL,并且正在正确执行

I am executing the following HQL and it is executing properly

String hql = "FROM Employee";
Query query = session.createQuery(hql);
List results = query.list();

现在,我还想将后端生成的sql记录在日志中以供支持用户使用.

Now, I also want to log the sql generated at the backend in logs for support users.

我想使用QueryTranslator,请告知如何为相应的HQL生成sql,请告知如何实现.

I want to make use of QueryTranslator please advise how can I generate the sql for the corresponding HQL please advise how to achieve this.

推荐答案

您可以使用休眠的QueryTranslator:

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();

这篇关于如何以编程方式将HQL转换为SQL查询(无日志记录)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆