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

时间:2013-08-27 18:53:49

标签: hibernate grails hql gorm

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

1 个答案:

答案 0 :(得分:1)

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

log4j.logger.org.hibernate.SQL=debug 

方法2:

您还可以为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样式注释中包含注释:

Hibernate:/ 我的HQL:来自供应商 /选择supplier0_.id作为id,supplier0_.name•作为name2_来自供应商供应商0 _

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

相关问题