2

我正在使用 PostgreSQL 9.5 和 jOOQ 3.8.4 进行一些测试。

具体来说,我想创建一个如下所示的域:

CREATE DOMAIN my_something NUMERIC(4,2);

然后我想创建一个类型如下:

CREATE TYPE my_type (
  something my_something;      
);

最后,我有一个表,其类型为字段,例如:

CREATE TABLE (
  id bigserial;
  type my_type;
);

我看到 jOOQ 3.8.4 将字段映射生something成为Object(在表记录和 POJO 中)。我期待BigDecimal,因为该域使用NUMERIC.

我错了吗?如果没有,有什么办法可以解决这个问题吗?

也许我可以使用customTypesandforcedTypes注册一个转换器,但我不确定它是否适用于用户定义的类型!有这方面的经验吗?

4

2 回答 2

1

jOOQ 3.8 尚未完全支持 PostgreSQL(或任何其他数据库的)数据类型域。这是一个待处理的功能请求: https ://github.com/jOOQ/jOOQ/issues/681

同时,您确实应该使用 a forcedTypehere 重写my_type.somethingNUMERIC. 更多信息在这里: 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

于 2016-09-12T09:21:54.197 回答
1

正如Lukas Eder所建议的,我刚刚添加了

<forcedType>
  <name>NUMERIC(4,2)</name>
  <expression>my_type.something</expression>
  <types>.*</types>
</forcedType>

并且工作得很好。

于 2016-09-13T09:50:43.710 回答