当前位置: 首页 > 知识库问答 >
问题:

如何在Hibernate中记录失败的sql?

有骏祥
2023-03-14

我正在用spring-data-jpa构建一个SpringBoot应用程序。我知道如何从这个问题记录所有的SQL。使用Hibernate时如何打印带有参数值的查询字符串

但如果我只想记录失败的SQL,该怎么办?

共有1个答案

燕嘉熙
2023-03-14

有两种选择:

  1. 使用参数值配置sql日志记录。禁用jdbc批处理并通过hibernate方法启用刷新。
  2. 添加调试JDBC驱动程序(如p6spy),它或多或少会执行上述操作。

首先,让我们分析问题,并将查询类型拆分为SELECT和Insert/Update查询。

    null
# logs the SQL statements
log4j.logger.org.hibernate.SQL=debug 

# Logs the JDBC parameters passed to a query
log4j.logger.org.hibernate.type=trace 
hibernate.jdbc.batch_size=1

或者,您可以使用为调试而设计的jdbc驱动程序。这将是p6spy驱动程序,它具有刷新每个SQL语句的选项,这正是您想要的。

这里需要设置autoflush=true配置参数,以确保每个sql语句都立即刷新到数据库中。https://p6spy.readthedocs.io/en/latest/configandusage.html

 类似资料:
  • 我正在尝试使用Web客户端创建REST调用 我只想记录通话结果。成功时 - 使用响应正文记录成功消息,在 5XX 或超时或其他时 - 记录错误消息。日志应该在后台创建(而不是由创建调用的线程创建)但是每次都会执行,工作正常,但也有 记录在日志文件中。 我也在一些教程中看到过方法,但在我的设置中有这样的方法。 如何记录成功和失败消息?

  • 我有一个REST应用程序,其中所有方法都需要身份验证。如果用户调用方法时没有身份验证信息,或者他没有所需的角色,Quarkus将发送http status 401/403,但不记录任何内容。 是否有方法拦截失败的身份验证尝试?

  • 我正在尝试使用reamer-kafka来消耗消息。其他一切都很好,但我想为失败的消息添加重试(2)。spring-kafka已经默认重试失败记录3次,我想使用reamer-kafka实现相同。 我用SpringKafka作为反应Kafka的包装。以下是我的消费者模板: 让我们考虑消耗方法如下 我使用以下逻辑在失败时重试消耗方法。 如果当前消费者记录异常失败,我想重试使用该消息。我试图用另一次重试(

  • 使用Yii2 2.0.12,php 5.6.24和codec0019 2.3.3 在最近的一次升级中,一组到目前为止一直有效的验收测试失败了。升级是对最新版本的标准composer更新。测试场景如下所示: 测试通过表单添加记录 抓取新记录验证 测试通过表单添加第二条记录 抓取新记录验证 第二个抓取失败,因为它返回一个空记录。我将其追溯到“Command”对象的“queryInternal”方法,其

  • 我使用从获取值。我需要做记录, 我尝试使用以下代码: 但是当在中的

  • 我正在使用下面的jQuery JSONP请求按URL检查资源的状态。当资源不可用或服务器关闭时,我的函数更新显示。 我遇到的问题是,尽管为和声明了处理程序(它们不将任何内容记录到控制台),但jQuery总是将失败的请求记录在控制台中。如果资源长时间不可用,这将建立一个巨大的控制台日志,最终导致浏览器进程崩溃(在我的例子中是Chrome)。 有什么办法可以阻止它这样做吗?