首页 > 解决方案 > 使用 jooq 插入区间数据

问题描述

我有一个 PostgreSQL 表,其列名称为 test_interval,类型为 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
)

我得到错误无法插入类型。如何使用 jooq 插入 postgres 的区间数据类型的数据?

标签: javapostgresqljooqquerydsljooq-sbt-plugin

解决方案


您的TEST_INTERVAL列是 type YearToSecond,因此您必须插入该类型的值,而不是 type String

只需调用YearToSecond构造函数

new YearToSecond(
  new YearToMonth(),
  new DayToSecond(0, 0, 15)
)

推荐阅读