gpt4 book ai didi

hibernate - 如何从 grails 事务中获取 hql 查询?

转载 作者:行者123 更新时间:2023-12-02 15:31:36 24 4
gpt4 key购买 nike

我们有一个带有遗留数据库的 grails 应用程序。当用户登录我们的应用程序并执行事务时,我们需要跟踪 session 期间发生的 sql。从代码的角度来看,有没有办法在调用 .save() 并将其转换为 sql 时运行 hql?我已经看到你可以在哪里打开它的日志记录,但我不想在运行时尝试从日志文件中解析这些信息。

最佳答案

方法 1:您可以通过在 log4j 中设置以下属性来记录 sql。

log4j.logger.org.hibernate.SQL=debug 

方法二:

您还可以为 SQL 输出提供注释。
Query 接口(interface)有一个 setComment() 方法,它接受一个 String 对象作为参数:
public Query setComment(String comment)

如果启用了 SQL 日志记录,则使用它来识别应用程序日志中的 SQL 输出。
例如
String hql = "from Supplier";
Query query = session.createQuery(hql);
query.setComment("My HQL: " + hql);
List results = query.list();

日志中的输出将在 SQL 之前以 Java 样式的注释形式出现注释:

hibernate :/我的 HQL:来自供应商/选择供应商0_.id 作为 id,供应商0_.name ➥ 作为 name2_ 从供应商供应商0_

这是解释如何将日志存储到数据库中的链接。 How to sanitize log messages in Log4j to save them in database

关于hibernate - 如何从 grails 事务中获取 hql 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18473310/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com