написать UUID в Vertica с помощью jooQ - PullRequest
1 голос
/ 15 апреля 2020

У меня нет сгенерированных jOOQ классов, поэтому я хочу использовать свой класс и записать его в vertica.

    Table<Record> table = DSL.table(DATA_TABLE_NAME);    
    for (Data d : data) {
          dsl.insertInto(table, Arrays.asList(
             DSL.field(name("uuid"), SQLDataType.UUID)
          ))
          .values(
             d.getUuid(),
          ).execute();
    }

В PostgreSql это работает, но в Vertica оно генерирует это исключение

[Vertica][VJDBC](2631) ERROR: Column "uuid" is of type uuid but expression is of type varchar

Как написать uuid tu Vertica без сгенерированного класса? d.getUuid () возвращает java .Util.UUID

1 Ответ

0 голосов
/ 15 апреля 2020

Тип UUID является относительно новым в Vertica. Начиная с jOOQ 3.13 он еще не поддерживается "из коробки": https://github.com/jOOQ/jOOQ/issues/10073

Вам нужно будет создать собственную привязку пользовательского типа данных для этого запроса и прикрепите его к вашему SQLDataType.UUID, например

DSL.field(name("uuid"), SQLDataType.UUID.asConvertedDataType(new MyVerticaUUIDBinding()));
...