【发布时间】:2019-01-06 13:43:10
【问题描述】:
jooq 正在为 sqlite 数据库生成无效的更新语句。
这是数据库表。
CREATE TABLE "job" (
`id` integer PRIMARY KEY AUTOINCREMENT,
`addressId` text,
`log` text
)
有效声明:
update "job" set "log" = (coalesce("log", ?) || ? || ?) WHERE id > 0
Jooq 生成的语句
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?另外,你为什么给JOB表起别名? -
是的,我配置了相同的方言。能够成功查询数据库但更新失败。我忘记删除别名了,现在更新了。
-
我无法重现这个。使用正确配置的配置,SQLite 的更新语句中没有列限定,也没有引用列。您能否展示一下您是如何创建
configuration的? -
感谢 Lukas Eder 抽出宝贵时间,不幸的是,由于某种原因,这是一个 IDE 问题,在我添加 SQLDialect.SQLITE 的位置没有刷新文件。在将 DIALECT 打印到控制台后,我知道了这一点。