0

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

4

1 回答 1

1

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

log4j.logger.org.hibernate.SQL=debug 

方法二:

您还可以为 SQL 输出提供注释。Query 接口有一个 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 样式的注释形式出现注释:

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

这是解释如何将日志存储到数据库中的链接。 如何清理 Log4j 中的日志消息以将它们保存在数据库中

于 2013-08-27T19:33:37.423 回答