Здравствуйте, я делаю это в методе
public void update(Table table, String tableName){
ArrayList<Name> firstRowInDslFormat = new ArrayList<>();
for (Object value : table.getTableDataInRowFormat(false).get(0))
firstRowInDslFormat.add(DSL.name(value.toString()));
for (int rowId = 1; rowId < table.getTableDataInRowFormat(false).size(); rowId++) {
stringBuilder.append("\n" + ctx
.update(DSL.table(DSL.name(tableName)))
.set(
DSL.row(firstRowInDslFormat),
DSL.row(table.getTableDataInRowFormat(false).get(rowId))
)
.where(...).getSQL(ParamType.INLINED) + ";");
}
}
getTableDataInRowFormat () возвращает Map (Integer, ArrayList) -> Map (rowId, значения столбца строки в строке)
Я не знаю, как это исправить.Я пытался, как вы видите при запуске метода, изменить тип с String на Name, но он выдает мне ошибку: Причина: org.jooq.exception.SQLDialectNotSupportedException: Тип класса org.jooq.impl.UnqualifiedName не поддерживается в диалекте DEFAULT
Когда я использую только строки, подобные этой:
DSL.row(table.getTableDataInRowFormat(false).get(0)),
DSL.row(table.getTableDataInRowFormat(false).get(rowId))).where()...
это работает ... но возвращает мне имя столбца с '', как вы видите в выводе ниже ... и когда я запускаюэто приведет к ошибке из-за синтаксиса, где '' не ожидается.
Вывод, когда я использую только строки:
- update New_tab1 set 'id' = '0',' name '=' John 'где (id = 1);
- update New_tab1 set 'id' = '1', 'name' = 'Pierce' где (id = 2);
Я знаю, что эти темы уже созданыно это немного отличается, я думаю.