jooq文本数组

tcbh2hod  于 2021-08-13  发布在  Java
关注(0)|答案(1)|浏览(394)

给定以下sql

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

指示代码生成器使用DDL数据库,生成的项的形式为

public final TableField<JSomethingRecord, Object[]> SOMETHING_

在文档中查找,我找不到如何在 String[] . 同样适用于 varchar 以及 varchar(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>

先谢谢你

bvk5enib

bvk5enib1#

从jooq3.13开始,postgresql的类型化数组还不受 DDLDatabase ,因为 DDLDatabase 在幕后将ddl转换为h2和h21.4.200 ARRAY 类型不支持除 Object[] .
这将在未来发生变化,因为:
h2 1.4.201将支持类型化数组,如postgresql:https://github.com/h2database/h2database/issues/1390
jooq将支持在测试容器中的实际postgresql数据库上运行ddl:https://github.com/jooq/jooq/issues/6551
jooq将支持解释ddl,而不是在第三方数据库产品上运行它:https://github.com/jooq/jooq/issues/7034
在此之前,为了使用这种特定于postgresql的特性,我建议使用连接到实际postgresql数据库示例的经典方法。

相关问题