【问题标题】:Generating of query in wrong format以错误的格式生成查询
【发布时间】:2019-08-21 09:21:12
【问题描述】:

我有一段代码有问题,它以错误的格式生成(输出)而不是请求的形式:

我想用没有“ALTER TABLE NameOfTab ADD”的外键生成查询/sql,所以我使用了这段代码:

DSL.constraint(DSL.name("fk_example"))
   .foreignKey("id1","id2")
   .references("referecnedTableName", "referencedColumn1", "referencedColumn2");

这里有一个问题,因为它以字符串形式返回:

constraint "fk_example"
foreign key (
"id1", 
"id2"
)
references "referecnedTableName" (
"referencedColumn1", 
"referencedColumn2"
)

预期结果是:

constraint fk_example foreign key (id1, id2) 
references referecnedTableName (referencedColumn1, referencedColumn2)

ALTER table 有类似的正确格式:

ctx.alterTable(tableName)
   .add(
      DSL.constraint(DSL.name("fk_example"))
         .foreignKey("id1","id2")
         .references("referecnedTableName","referencedColumn1","referencedColumn2"))
   .getSQL(ParamType.INLINED));

但它用“alter table t3 add ...”返回它,我不想要“alter table”部分。

【问题讨论】:

    标签: java sql jooq


    【解决方案1】:

    您应该使用DSLContext.render(QueryPart) 而不是QueryPart.toString()toString() 行为默认调用 render() 并带有一些未指定的默认 Settings 包括生成那些双引号标识符,我怀疑你不想拥有。

    【讨论】:

    • 这就是我想要的 ;) 谢谢,我已经通过使用正则表达式匹配删除更改表部分来做到这一点:D 但这更好:)
    猜你喜欢
    • 1970-01-01
    • 2021-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-04
    相关资源
    最近更新 更多