【问题标题】:HSQLDB and JOOQ code generationHSQLDB 和 JOOQ 代码生成
【发布时间】:2014-03-06 14:41:53
【问题描述】:

我正在尝试使用 JOOQ 连接到 HSQLDB,但我失败了,这是错误消息:

INFO: Initialising properties  : /codegen.xml
2014-02-09T09:55:19.542+0100  SEVERE  Error while fetching check constraints
org.jooq.exception.DataAccessException: SQL [select "tc"."TABLE_SCHEMA", "tc"."TABLE_NAME", "cc"."CONSTRAINT_NAME", "cc"."CHECK_CLAUSE" from "INFORMATION_SCHEMA"."TABLE_CONSTRAINTS" as "tc" join "INFORMATION_SCHEMA"."CHECK_CONSTRAINTS" as "cc" using( "CONSTRAINT_CATALOG", "CONSTRAINT_SCHEMA", "CONSTRAINT_NAME") where "tc"."TABLE_SCHEMA" in (cast(? as varchar(128)))]; user lacks privilege or object not found: cc.CONSTRAINT_NAME

此查询在 HSQLDB 管理器上也失败(与 JOOQ 代码生成器的错误相同):

select "tc"."TABLE_SCHEMA", "tc"."TABLE_NAME", "cc"."CHECK_CLAUSE" , "cc"."CONSTRAINT_NAME"
from "INFORMATION_SCHEMA"."TABLE_CONSTRAINTS" as "tc" 
    join "INFORMATION_SCHEMA"."CHECK_CONSTRAINTS" as "cc" 
    using( "CONSTRAINT_CATALOG", "CONSTRAINT_SCHEMA", "CONSTRAINT_NAME") 

这个查询工作正常:

select "tc"."TABLE_SCHEMA", "tc"."TABLE_NAME", "cc"."CHECK_CLAUSE" , "CONSTRAINT_NAME"
from "INFORMATION_SCHEMA"."TABLE_CONSTRAINTS" as "tc" 
    join "INFORMATION_SCHEMA"."CHECK_CONSTRAINTS" as "cc" 
    using( "CONSTRAINT_CATALOG", "CONSTRAINT_SCHEMA", "CONSTRAINT_NAME") 

我认为问题出在“cc”限定符上(在查询返回的“CONSTRAINT_NAME”字段上),这是 HSQLDB 错误吗?

我正在使用:

  • HSQLDB 2.3.1
  • JOOQ 3.2.3

谢谢 西西奥

【问题讨论】:

  • 删除连接上的“Using”子句(使用 on 子句)查询正常工作。是否可以强制 JOOQ 使用而不使用?
  • 我只是想让你知道我已经通过更改包含子句“.on”中的子句“.using”的类 HSQLDBDatabase 找到了解决方案,现在它可以正常工作了。我想..我会告诉你的。

标签: sql hsqldb jooq


【解决方案1】:

这是 jOOQ 3.2 中的一个错误。我为此创建了一个问题:#3019。这是与 jOOQ 当前对 JOIN .. USINGNATURAL JOIN:#2808 的解释相关的更普遍错误的副作用。

不过,该错误应该只是装饰性的,对您的代码生成没有任何影响。

【讨论】:

    猜你喜欢
    • 2020-07-26
    • 2014-09-09
    • 2017-12-03
    • 2017-08-13
    • 2020-01-23
    • 2016-06-12
    • 2020-12-23
    • 2016-11-22
    • 2015-12-13
    相关资源
    最近更新 更多