作为对象数组生成的 Jooq 文本数组
Jooq text array generated as object array
给出以下 sql
create table something(
id BIGSERIAL,
something TEXT[] NOT NULL DEFAULT '{}',
PRIMARY KEY (id)
);
并指示代码生成器使用 DDLDatabase
生成的项目的形式为
public final TableField<JSomethingRecord, Object[]> SOMETHING_
环顾文档,我找不到如何将其映射到 String[]
。
同样适用于 varchar
和 varchar(255)
。
我不必在这里使用强制类型,因为至少三个中的一个应该是有效的数据类型
而不是像 UUID
那样回退到 OTHER
(我看到有一个强制类型的例子)
我是在做/理解错了什么,还是这是一种预期的行为?
我使用的数据库是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>
提前致谢
从 jOOQ 3.13 开始,DDLDatabase
还不支持 PostgreSQL 的类型化数组,因为 DDLDatabase
的当前实现在幕后将您的 DDL 转换为 H2,而 H2 1.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 数据库实例的经典方法。
给出以下 sql
create table something(
id BIGSERIAL,
something TEXT[] NOT NULL DEFAULT '{}',
PRIMARY KEY (id)
);
并指示代码生成器使用 DDLDatabase 生成的项目的形式为
public final TableField<JSomethingRecord, Object[]> SOMETHING_
环顾文档,我找不到如何将其映射到 String[]
。
同样适用于 varchar
和 varchar(255)
。
我不必在这里使用强制类型,因为至少三个中的一个应该是有效的数据类型
而不是像 UUID
那样回退到 OTHER
(我看到有一个强制类型的例子)
我是在做/理解错了什么,还是这是一种预期的行为?
我使用的数据库是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>
提前致谢
从 jOOQ 3.13 开始,DDLDatabase
还不支持 PostgreSQL 的类型化数组,因为 DDLDatabase
的当前实现在幕后将您的 DDL 转换为 H2,而 H2 1.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 数据库实例的经典方法。