JOOQ 代码生成器跳过包含 JsonNode 字段的类
Posted
技术标签:
【中文标题】JOOQ 代码生成器跳过包含 JsonNode 字段的类【英文标题】:JOOQ Code Generator skips a class that contains a JsonNode field 【发布时间】:2019-10-22 00:00:22 【问题描述】:我目前正在开发一个项目,该项目使用 JOOQ 进行带有 Postgres 的 sql 事务。但是其中一个模型具有 JsonNode 类型的字段(postgres 中的 jsonb )。 JOOQ 代码生成器不支持这一点,所以我添加了一个自定义绑定,它应该可以解决问题,但即使加载了绑定,它也不会应用于特定模型,并且生成器只是跳过这个模型。
我的堆栈(在演示中)是: JOOQ 休眠 杰克逊。
演示项目提供了两种模型,一种是有效的,一种是带有 JsonNode 的,以显示生成器实际上正在运行并扫描模型,但跳过包含 JsonNode 字段的模型。
我已经在forcedType表达式字段中尝试了多种名称:.simplename.、.SIMPLENAME.、.impl.、。 IMPL.、.json.、.JSON.、.jsonb.、.JSONB.,
尝试设置 sql 绑定到 ::json , ::jsonb, ::_jsonb
尝试将寄存器类型设置为Types.VARCHAR、Types.OTHER、Types.JAVA_OBJECT
以下 repo https://github.com/mmichailidis/JooqDemo 包含一个重现问题的项目
预期的输出是在 jooq 生成的文件夹中生成两个模型,但只生成一个没有 JsonNode 的模型。
【问题讨论】:
感谢您的提问。对于未来的用户,如果您可以在此问题中直接在此处发布整个 pom.xml,将会很有用。您的存储库可能会在几个月内变成死链接,这个问题对其他 Stack Overflow 访问者没有用处 【参考方案1】:您正在使用JPADatabase
:https://www.jooq.org/doc/latest/manual/code-generation/codegen-jpa
按照目前的实现方式,您无法在与实体本身被编译的相同 Maven 阶段中使用JPADatabase
处理您的实体。它们在 JPADatabase
的类路径上尚不可用。您必须将实体提取到单独的项目中,并在第二步中生成 jOOQ 代码。
您可能会看到其中一个模型的原因可能是您之前通过其他方式将它们安装在本地存储库中。
【讨论】:
感谢您的回答。原始项目是一个多模块项目,它遵循您链接的文章的说明。现在我已经更新了演示项目,使其在模块结构方面遵循原始项目。不幸的是,问题仍然存在。本地存储库中没有安装任何内容,所有测试都使用mvn clean package
运行。以上是关于JOOQ 代码生成器跳过包含 JsonNode 字段的类的主要内容,如果未能解决你的问题,请参考以下文章