Вставить данные интервала с помощью jooq

У меня есть таблица PostgreSQL со столбцом с именем столбца test_interval и интервалом типа.

test_interval interval

Я использую jooq для вставки данных в таблицу. В моем классе TestTable.java поле имеет тип:

public final TableField<TestTable, YearToSecond> TEST_INTERVAL = createField(DSL.name("test_interval"), org.jooq.impl.SQLDataType.INTERVAL.nullable(false), this, "");

Я создаю таблицу как:

dsl.createTableIfNotExists(TestTable)
   .column(TestTable.TEST_INTERVAL)
   .execute()  

Я хочу вставить данные в таблицу, и данные имеют форму:

val str = "0 years 0 mons 0 days 0 hours 15 mins 0.00 secs"   
dsl.insertInto(
    TestTable,
    TestTable.TEST_INTERVAL
).values(
    str
)

Я получаю сообщение об ошибке, не могу вставить тип. Как я могу вставить данные интервального типа данных postgres с помощью jooq?


person ARYA    schedule 16.06.2020    source источник


Ответы (1)


Ваш столбец TEST_INTERVAL относится к типу YearToSecond, поэтому вам нужно вставить значение этого типа, а не типа String.

Просто вызовите _ 4_ конструктор

new YearToSecond(
  new YearToMonth(),
  new DayToSecond(0, 0, 15)
)
person Lukas Eder    schedule 16.06.2020
comment
Я сделал YearToSecond.valueOf (str), где str = 0 лет 0 месяцев 0 дней 0 часов 15 минут 0,00 секунд У меня не сработало @LukasEder - person ARYA; 16.06.2020
comment
Да, это особый формат PostgreSQL, который не поддерживается этим методом. Почему бы просто не вызвать конструктор с конкретными значениями? Смотрите мой обновленный ответ. - person Lukas Eder; 16.06.2020