java - 使用 JOOQ 记录存储过程的绑定(bind)值

标签 java sql jooq

在调试日志记录级别,JOOQ 正在记录存储的过程语句、执行时间和结果数。但它没有记录存储过程的实际绑定(bind)值。我正在将 JOOQ 与 Oracle 一起使用。 设置对象准备如下 -

Configuration configuration = new DefaultConfiguration()
    .set(new JooqTxConnectionProvider(dataSource))
    .set(SQLDialect.ORACLE)
    .set(recordMapperProvider)
    .set(new Settings()
        .withRenderSchema(false)
        .withRenderNameStyle(RenderNameStyle.AS_IS)
        .withExecuteLogging(false))
    .set(new DefaultExecuteListenerProvider(
             new CallableStatementExecuteListener()),
         new DefaultExecuteListenerProvider(
             new LoggingExecuteTimeListener(configurationManager)));

日志输出如下所示 -

2014-01-27 23:03:31,204 DEBUG [requests-52 R:30 A:400663505008 E:400663505008 S:400049845008] org.jooq.tools.LoggerListener - 执行查询:开始 STATE.CREATE_SESSION(ID_OUT => ?,服务器 => ?);结束;

2014-01-27 23:03:31,207 DEBUG [requests-52 R:30 A:400663505008 E:400663505008 S:400049845008] org.jooq.tools.StopWatch - 执行的查询:总计:2.976ms

2014-01-27 23:03:31,207 DEBUG [requests-52 R:30 A:400663505008 E:400663505008 S:400049845008] org.jooq.tools.StopWatch - 整理:总计:3.186ms,+0.209ms

我想看到的是包含“带有绑定(bind)值”和过程的实际绑定(bind)参数的行。

最佳答案

看来 jOOQ 3.2.2 的默认记录器 LoggerListener 不会内联绑定(bind)独立存储过程调用的值。这是一个错误,应该修复:#2987

无论如何,如果您希望记录绑定(bind)值,您有多种选择:

  1. 启用“跟踪”日志记录。然后,jOOQ 将在新行中记录所有绑定(bind)值。但这相当冗长
  2. 实现您自己的记录器,使用内联绑定(bind)值重新呈现 Routine 对象。这可以这样完成:

    @Override
    public void renderEnd(RenderContext ctx) {
        // [...]
        log.debug(DSL.using(configuration)
                     .renderInlined(ctx.routine()));
    }
    

关于java - 使用 JOOQ 记录存储过程的绑定(bind)值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21395687/

相关文章:

java - Eclipse 中的对象概述?

返回唯一关联的 MySQL 语句

c# - 使用 UniqueIdentifier 列类型和 [DatabaseGenerate(DatabaseGenerateOption.Identity)] 作为模型的键在 EF Code First 中不起作用

sql - 如何解决 ORA-00937 : not a single-group group function when calculating percentage?

java - 使用 jooq/postgresql 从 json 中提取键/值对 - java

java - 将自定义 `DataType` 添加到 postgres-enum-typed `Binding` 时,Field 的 `TableField` 发生意外变化

java - org.postgresql.jdbc.PgResultSet 实例和 io.vertx.core.impl.VertxThread 内存泄漏

java - Spring 3.2 MVC - 无法将 URL 与 Controller 匹配

java - 如何通过传递对象类型来创建多个对象?

java - 从 ArrayList 中删除对象