使用JOOQ无法在SQLITE中更新表行

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用JOOQ无法在SQLITE中更新表行相关的知识,希望对你有一定的参考价值。

jooq正在为sqlite数据库生成无效的更新语句。

这是数据库表。

CREATE TABLE "job" (
  `id` integer PRIMARY KEY AUTOINCREMENT, 
  `addressId` text,
   `log` text
)

有效声明:

update "job" set "log" = (coalesce("log", ?) || ? || ?) WHERE id > 0

Jooq Generated Statement

update "job" set "job"."log" = (coalesce("job"."log", ?) || ? || ?) where "job"."id" >= ?

以下是示例代码使用:

DSL.using(configuration).update(JOB).set(JOB.LOG, DSL.coalesce(JOB.LOG, "")
                .concat("char(10)", "Hello"))
                .where(JOB.ID.ge(0)).execute()

我如何强制jooq生成有效的sqlite更新语句?

答案

最可能的解释是你没有用configuration方言正确配置你的SQLDialect.SQLITE。在该方言中,set子句中的列引用不具有限定条件,也不会引用任何列或表。

以上是关于使用JOOQ无法在SQLITE中更新表行的主要内容,如果未能解决你的问题,请参考以下文章

SQLite 无法通过 JDBC 和 jOOQ 在 SELECT 中找到现有列

在Scrapy中使用Sqlalchemy更新表行

如何修复:Jooq 代码不会从 sql 脚本为内存 db 中的 sqlite 生成 java 代码

如何用新数据正确覆盖 SQLite 表行?

使用jooq上下文将内存sqlite转储到字节[]

如何使用 jOOQ 通过 SQLite 正确生成日期和时间类型