【问题标题】:JOOQ Model API: insertQuery and Postgres returning statementJOOQ 模型 API:insertQuery 和 Postgres 返回语句
【发布时间】:2018-03-27 03:36:43
【问题描述】:

使用常规 JOOQ 的 DSL,我检索 returning 值类似于:

val resultSet = dslContext
                .insertInto(ACCOUNTS)
                .columns(
                    ACCOUNTS.STATUS
                )
                .values(
                   model.status
                )
                .returning(
                    ACCOUNTS.ID
                )
                .fetch().intoResultSet()

resultSet.next()

resultSet.use {
   val id = resultSet.getLong(1)
   model.id = id
}

但是如何获取 InsertQuery 的 ResultSet 呢?:

defaultDslContext.insertQuery(POSTS).apply {
   addValue(POSTS.CONTENT, "foo")
   setReturning(POSTS.ID)
   //getSomehowResultSet() <= what do I do here?
}

例如,SelectQuery 上有fetchResultSet 方法。

【问题讨论】:

  • 我假设这是使用 Kotlin(给定 apply 函数)。这真的对你有要求吗?毕竟,模型 API 并不是为流畅的风格而设计的,如果你没有预料到,那么 fetch().intoResultSet() 方法将与 DSL API 一样工作......
  • 我生成了某种存储库,并且必须使用模型 api。 InsertQuery 帽子只有 execute() 方法没有 fetch。有没有办法从中获取结果集?
  • 是的,你当然是对的。我给个答案

标签: jooq


【解决方案1】:

在模型API中,获取返回结果的正确方法是:

query.execute();
query.getReturnedRecords();

【讨论】:

    猜你喜欢
    • 2021-02-04
    • 2021-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-10
    • 2015-05-05
    • 2021-03-18
    相关资源
    最近更新 更多