我正在使用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
。
我错了吗?如果没有,有没有办法克服这个问题?
也许我可以使用customTypes
和forcedTypes
来注册转换器,但我不确定它是否适用于用户定义的类型!有这方面的经验吗?
正如卢卡斯·埃德建议的那样,我只是补充说
<forcedType>
<name>NUMERIC(4,2)</name>
<expression>my_type.something</expression>
<types>.*</types>
</forcedType>
而且效果很好。
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
现在我确实有了一个稍微复杂一点的用例:我有一个查询,它将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过于严格,对数据类型转换非常