给定以下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>
先谢谢你
1条答案
按热度按时间bvk5enib1#
从jooq3.13开始,postgresql的类型化数组还不受
DDLDatabase
,因为DDLDatabase
在幕后将ddl转换为h2和h21.4.200ARRAY
类型不支持除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数据库示例的经典方法。