jOOQ 和 PostgreSQL 域:映射到特定对象类型
jOOQ and PostgreSQL domain: mapping to specific object type
我正在使用 PostgreSQL 9.5 和 jOOQ 3.8.4 进行一些测试。
具体来说,我想创建一个如下所示的域:
CREATE DOMAIN my_something NUMERIC(4,2);
那我想创建一个类型如下:
CREATE TYPE my_type (
something my_something;
);
最后,我有一个 table,它有一个类型作为字段,例如:
CREATE TABLE (
id bigserial;
type my_type;
);
我看到 jOOQ 3.8.4 将字段 something
的映射生成为 Object
(在 table 记录和 POJO 中)。我期待 BigDecimal
因为域使用 NUMERIC
.
我错了吗?如果没有,有什么办法可以解决这个问题吗?
也许我可以使用 customTypes
和 forcedTypes
来注册转换器,但我不确定它是否适用于用户定义的类型!有这方面的经验吗?
jOOQ 3.8 尚未完全支持 PostgreSQL(或任何其他数据库的)数据类型域。这是一个待处理的功能请求:
https://github.com/jOOQ/jOOQ/issues/681
同时,你确实应该在这里使用forcedType
将my_type.something
改写为NUMERIC
。更多信息在这里:
http://www.jooq.org/doc/latest/manual/code-generation/data-type-rewrites
这是最简单的方法。您当然也可以编写自己的数据类型绑定以获得更完整的解决方案,但我认为在这种情况下没有必要。有关数据类型绑定的更多信息,请参见:
http://www.jooq.org/doc/latest/manual/code-generation/custom-data-type-bindings
根据 Lukas Eder 的建议,我刚刚添加了
<forcedType>
<name>NUMERIC(4,2)</name>
<expression>my_type.something</expression>
<types>.*</types>
</forcedType>
并且工作得很好。
我正在使用 PostgreSQL 9.5 和 jOOQ 3.8.4 进行一些测试。
具体来说,我想创建一个如下所示的域:
CREATE DOMAIN my_something NUMERIC(4,2);
那我想创建一个类型如下:
CREATE TYPE my_type (
something my_something;
);
最后,我有一个 table,它有一个类型作为字段,例如:
CREATE TABLE (
id bigserial;
type my_type;
);
我看到 jOOQ 3.8.4 将字段 something
的映射生成为 Object
(在 table 记录和 POJO 中)。我期待 BigDecimal
因为域使用 NUMERIC
.
我错了吗?如果没有,有什么办法可以解决这个问题吗?
也许我可以使用 customTypes
和 forcedTypes
来注册转换器,但我不确定它是否适用于用户定义的类型!有这方面的经验吗?
jOOQ 3.8 尚未完全支持 PostgreSQL(或任何其他数据库的)数据类型域。这是一个待处理的功能请求: https://github.com/jOOQ/jOOQ/issues/681
同时,你确实应该在这里使用forcedType
将my_type.something
改写为NUMERIC
。更多信息在这里:
http://www.jooq.org/doc/latest/manual/code-generation/data-type-rewrites
这是最简单的方法。您当然也可以编写自己的数据类型绑定以获得更完整的解决方案,但我认为在这种情况下没有必要。有关数据类型绑定的更多信息,请参见: http://www.jooq.org/doc/latest/manual/code-generation/custom-data-type-bindings
根据 Lukas Eder 的建议,我刚刚添加了
<forcedType>
<name>NUMERIC(4,2)</name>
<expression>my_type.something</expression>
<types>.*</types>
</forcedType>
并且工作得很好。