java - 如何以编程方式将 HQL 转换为 SQL 查询(不记录)

标签 java sql hibernate hql jpql

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

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

现在,我还想将后端生成的 sql 记录到支持用户的日志中。

我想使用 QueryTranslator 请告知如何为相应的 HQL 生成 sql 请告知如何实现这一点。

最佳答案

您可以使用 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();

关于java - 如何以编程方式将 HQL 转换为 SQL 查询(不记录),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18383946/

相关文章:

java - 任务 ':app:mergeDebugResources'的执行失败。 > java.util.concurrent.ExecutionException:com.android.builder.internal.aapt.v2.Aapt2Exception:

mysql - 我将运行什么 SQL 查询来获取我丢失的拍卖列表? (易趣示例)

java - Spring 服务中的 LazyInitializationException

java - 有没有任何java框架允许开发人员在运行时创建模型?

java - log4j 属性更改未反射(reflect)在 Eclipse 中

java - 在Ubuntu上安装OpenJDK 14

SQL选择连接: is it possible to prefix all columns as 'prefix.*' ?

java - 使用 Open Session In View 时事务传播如何工作?

java - 如何用Java生成透明的GIF?

mysql - 按特定条件订购商品,然后其余