无法使用JOOQ更新SQLITE中的表行
jooq正在为sqlite数据库生成无效的update语句 这是数据库表无法使用JOOQ更新SQLITE中的表行,sqlite,kotlin,jooq,Sqlite,Kotlin,Jooq,jooq正在为sqlite数据库生成无效的update语句 这是数据库表 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".
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更新语句?最有可能的解释是,您没有正确地使用
sqldialent.sqlite
方言配置。在该方言中,set
子句中的列引用将不被限定,任何列或表也不会被引用。您是否使用sqldialent.SQLITE
正确设置了配置
?另外,为什么要为作业
表别名?是的,我配置了相同的方言。能够成功查询数据库,但更新失败。我忘记删除别名,现在已更新。我无法复制此别名。通过正确配置,SQLite的update语句中没有列限定,也没有列引用。您能展示一下如何创建配置吗?
?感谢Lukas Eder抽出时间,不幸的是,由于某种原因,这是一个IDE问题。我添加了sqldial.SQLITE,但文件没有刷新。在将方言打印到控制台后,我知道了这一点。昨天在您的评论后,我重新检查了,但没有明确调试问题。