当前位置: 首页 > 知识库问答 >
问题:

jOOQ和PostgreSQL域:映射到特定对象类型

壤驷兴朝
2023-03-14

我正在使用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

我错了吗?如果没有,有没有办法克服这个问题?

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

共有2个答案

栾弘新
2023-03-14

正如卢卡斯·埃德建议的那样,我只是补充说

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

而且效果很好。

慎弘化
2023-03-14

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

与此同时,您确实应该使用一个forcedType来重写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

 类似资料:
  • 现在我确实有了一个稍微复杂一点的用例:我有一个查询,它将json对象的一部分提取到我的记录的一个字段中(在select子句中使用运算符)。 我希望将该记录映射到一个pojo,以便记录的所有字段都映射到pojo的字段(使用注释),并且应该将特定的json嵌套对象映射到特定的Java对象。 实现这一目标的正确方法是什么?

  • 问题内容: 我正在尝试将JSON文件映射到类对象,然后根据新接收的JSON更新卡。 我的JSON结构是这样的 我的班级看起来像这样: 如何将JSON文件中的值映射到CardInfo类创建的对象的字段中? 更新资料 以下试用版在 ci.description上 打印为null ,是否表示从未创建该对象? 更新2 打印cardInfo给出以下内容: {$ class:FirstCard,id:1,说明

  • 在计算之前。对列表执行以下操作: 将事务处理按年份分组 然后按方法分组 最后产生的对象应该有平均值、年份和方法的值。

  • 问题内容: 我有一个Postgres表,其中包含type列。在JDBC代码中,我使用了String数组,但是有一个异常告诉我这两个不匹配。如果这些类型之间没有映射,您可以为字符串数组建议Postgres类型吗? 这是代码: 问题答案: 要了解多维PostgreSQL数组类型,请考虑手册中的以下引号: 当前实现也不执行声明的维数。无论大小或维数如何,特定元素类型的数组都被认为是同一类型。因此,仅声明

  • 映射对象的每一个属性到一个变量中,这个过程就是我们知道的多声明。这就是为什么会有componentX函数被自动创建。使用上面的Forecast类举个例子: val f1 = Forecast(Date(), 27.5f, "Shiny day") val (date, temperature, details) = f1 上面这个多声明会被编译成下面的代码: val date = f1.compo

  • 问题内容: 我的PostgreSQL数据库(9.2)中有一个表,其中的列类型为JSON。我很难将此列映射到“ JPA2实体”字段类型。 我尝试使用String,但是当我保存实体时,出现一个异常,即它无法将字符转换为JSON。 处理JSON列时使用的正确值类型是什么? 一个简单的解决方法是定义一个文本列。 问题答案: 请参阅PgJDBC错误#265。 PostgreSQL过于严格,对数据类型转换非常