1

给定以下sql

create table something(
  id BIGSERIAL,
  something TEXT[] NOT NULL DEFAULT '{}',
  PRIMARY KEY (id)
);

并指示代码生成器使用 DDLDatabase 生成的项的形式为

    public final TableField<JSomethingRecord, Object[]> SOMETHING_

在文档中环顾四周,我找不到如何将其映射到String[]. 同样适用于varcharvarchar(255)。我不应该在这里使用强制类型,因为至少三个中的一个应该是有效的数据类型,而不是回退到OTHER它发生的情况UUID(我看到有一个强制类型的示例)

我是在做/理解错误还是这是预期的行为?

我使用的数据库是 PostGres,生成器配置如下

<generator>
    <database>
        <name>org.jooq.meta.extensions.ddl.DDLDatabase</name>
        <inputCatalog/>
        <inputSchema>PUBLIC</inputSchema>
        <properties>
            <property>
                <key>use-attribute-converters</key>
                <value>true</value>
            </property>
            <property>
                <key>scripts</key>
                <value>src/main/resources/db/migration/*</value>
            </property>
        </properties>
    </database>
    <target>
        <clean>true</clean>
        <packageName>my.other.package</packageName>
        <directory>target/generated-sources/jooq</directory>
    </target>
</generator>

先感谢您

4

1 回答 1

0

从 jOOQ 3.13 开始,PostgreSQL 的类型化数组DDLDatabase还不受.DDLDatabaseARRAYObject[]

这将在未来发生变化,因为:

  1. H2 1.4.201 将支持像 PostgreSQL 这样的类型化数组:https ://github.com/h2database/h2database/issues/1390
  2. jOOQ 将支持在测试容器中的实际 PostgreSQL 数据库上运行 DDL:https ://github.com/jOOQ/jOOQ/issues/6551
  3. jOOQ 将支持解释 DDL 而不是在第三方数据库产品上运行它:https ://github.com/jOOQ/jOOQ/issues/7034

在此之前,为了使用此类 PostgreSQL 特定功能,我建议使用连接到实际 PostgreSQL 数据库实例的经典方法。

于 2020-05-29T07:27:29.907 回答