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

jOOQ转换器和类型

桓兴腾
2023-03-14

在我的jOOQ配置文件中,我为日期字段定义了一个转换器,但是在forcedType的节中定义类型的条件时遇到了一些问题。

对于测试,我使用了表达式:

<expression>.*</expression>

以及在类型上:

<types>DATE</types>

我希望匹配数据类型为DATE的所有列。取而代之的是,它不匹配任何一个列,除了一个类型为DATE的列之外,就像其他不匹配的列一样,但这个列的def:CURRENT DATE列似乎与此匹配。

为了让它工作,我必须使用:

<types>.*DATE.*</types>

有人能给我解释一下吗?我使用Derby作为db。

谢谢你的帮助

更新一个例子

我在不同的表格中有这些字段:

表A:

INSERT_DATE DATE NOT NULL

表B:

CREATION_DATE DATE NOT NULL

表C:

RELEASE_DATE DATE DEFAULT CURRENT DATE

将强制类型与

只有使用jOOQ生成代码后表C上的字段使用转换器。忽略表A、B中的那些。我看到的唯一区别是“当前日期”


共有1个答案

公羊宗清
2023-03-14

这似乎是jOOQ中的一个bug,我已经在GitHub上注册过了,现在:

  • https://github.com/jOOQ/jOOQ/issues/3667

看起来像是被馈入的类型

  • https://github.com/jOOQ/jOOQ/issues/3661

在修复此错误之前,您的解决方法是使用正则表达式以保持安全,类似于您使用的正则表达式,或者更好:

<types>DATE.*</types>

 类似资料:
  • 我正试图在Jooq的帮助下实现一个软件,将数据读写到h2数据库中。我的PLC_数据表有一个带有时间戳的列,该列通常映射到LocalDateTime,但我需要将该数据映射到POJO中的Instant,因此我编写了自定义转换器: 我在我的文件中引用了forcedType: 我已经注释了我的POJO: 当我从DB读到我的POJO时,代码工作得很有魅力,如下所示: 但当我尝试在数据库中写入一些数据时,我在

  • 我们有一些反映到多个数据库字段的自定义类型。例如 存储为3个单独的db字段。总是写作很无聊 然后从相应的记录字段中获取记录并创建PersonName类型。 其思想是定义一些多列自定义字段,在查询执行期间由jooq将其扩展为三个“真实”字段,并打包到结果中的一个PersonName对象。 看起来用可以做这样的事情,但我想知道,可能已经有解决这种情况的方法了。

  • 在我的Oracle数据库中,我有存储为VARCHAR的数量值。从数据库中检索记录时,我希望将它们映射到一个POJO,其中金额值表示为double。不幸的是,我不能使用强制类型,因为在数据库中,所有内容都存储为VARCHAR,并且没有模式将列标识为包含金额值的列。 我正在查看jOOQ转换器,这似乎是我想要的。因此,我为此创建了一个jOOQ转换器: 然而,每当我想使用将数据库记录映射到我的POJO时,

  • 我试图将PostgreSQL(9.4)UUID绑定到每个UUID周围的包装类数组。请注意,这些包装器在整个应用程序中都是集成的,因此删除它们不是一个选项。我正在使用jOOQ和它的maven插件(3.5.1)来生成PoJo、记录和表类。 我在绑定数据库模式时遇到问题的相关部分如下所示: 然后,我尝试使用forcedType元素转换该类,但它生成的类无法编译。放弃这一点,我只是将它们作为UUID生成,

  • 这些转换器在所有数据库共享。 下面是实现LocationConverter,把位置转化成字符串: 作为3.0的TypeConverter可以在column-by-column基础上使用。

  • 给出此SO线程中给出的最后一个示例。 我得到这个错误: 我应该使用jooq会满意的特殊映射器吗? 欢迎任何帮助 编辑: Jooq版本:3.14.3 Postgres:11 dto公司 我也尝试过使用SimpleFlatMapper 但是得到 我正在使用spring boot,以下是我对jackson的依赖: 堆栈跟踪: