Генерация запроса в неверном формате - PullRequest
0 голосов
/ 30 марта 2019

У меня проблема с фрагментом кода, который генерируется (выводится) в неправильном формате и не запрошенной форме:

Я хотел создать запрос / sql с внешним ключом без «ALTER TABLE NameOfTab ADD», поэтому я использовал этот кусок кода:

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:

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".

1 Ответ

1 голос
/ 31 марта 2019

Вы должны использовать DSLContext.render(QueryPart) вместо QueryPart.toString().Поведение toString() по умолчанию вызывает render() с некоторыми неопределенными значениями по умолчанию Settings, включая генерацию идентификаторов в двойных кавычках, которые, как я подозреваю, вам не нужны.

...