问题标签 [jooq-codegen-maven]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
748 浏览

maven - 如何配置jooq-codegen-maven,所以我只能手动运行而不是每次编译

目前我的 jooq-codegen-maven 插件在每次编译时都会运行,从而减慢了构建速度。在我更改数据库架构后,我只想手动运行它。如何更改插件配置以实现此目的?

0 投票
1 回答
197 浏览

sql - Jooq 文本数组生成为对象数组

给定以下sql

并指示代码生成器使用 DDLDatabase 生成的项的形式为

在文档中环顾四周,我找不到如何将其映射到String[]. 同样适用于varcharvarchar(255)。我不应该在这里使用强制类型,因为至少三个中的一个应该是有效的数据类型,而不是回退到OTHER它发生的情况UUID(我看到有一个强制类型的示例)

我是在做/理解错误还是这是预期的行为?

我使用的数据库是 PostGres,生成器配置如下

先感谢您

0 投票
1 回答
664 浏览

java - java.lang.ClassNotFoundException: org.postgresql.Driver from jooq code generating task

I am implementing java-spring-boot project ( jdk11, spring boot 2.3.0.RELEASE ) using jooq-hikari-hibernate-postgres for back end.

I have already created the tables using flyway.

I have created a task name "generateJooqRepo" in build.gradle to generate the java code for the repository. The task is running however failing with error message:

Any insight on what I am doing wrong?

build.gradle:

0 投票
1 回答
380 浏览

java - 如何在返回 JSON 类型的 jOOQ 中执行 PL/pgSQL 用户定义函数的 SELECT 查询?

我在寻找正确的方法将 PL/pgSQL 中的用户定义函数转换为 jOOQ 代码时遇到问题。我在 PL/pgSQL 中的用户定义函数返回 JSON 类型,我需要以某种方式在 jOOQ 中调整/转换它。我用谷歌搜索了一些例子,但没有找到。

以防万一这是我在 PL/pgSQL 中的用户定义函数:

...以及另一个使用上面列出的功能的。

这两个函数已在我的 Maven 项目中成功生成代码,最后一个get_all_orders() 函数需要对其执行 SELECT 操作并在我的 jOOQ 代码中返回 JSON 对象。

这是Routines.java**.jooq 包中生成的类Keys.javaDefaultCatalog.java以及其他类:

这是我GetAllOrders.java位于**.jooq.routines包中的例程类

最后,这是我在 jOOQ 中执行 SELECT 查询的 jOOQ 代码:

... qe.query() 方法的定义如下:

产生的问题

“类型不匹配:无法从 Future<Object> 转换为 Future<JsonObject>”

“类型不匹配:无法从 Future<QueryResult> 转换为 Future<Object>”

顺便说一句,我需要提到这是使用jOOQ 3.13.1的vertx-jooq实现。 非常感谢任何帮助/建议。

更新
这里要求缺少类型和签名第一个transaction()方法(更多信息在这里

...和executeAny()(更多信息可在此处获得):

...这里是ReactiveQueryResult

UPDATE2:
这是我get_all_orders()在 JSON 类型的 PL/pgSQL 中创建的函数的结果:

0 投票
1 回答
94 浏览

jooq - JOOQ maven 代码生成和使用不同的数据库进行构建时和运行时

假设我有以下用例:

  • 我希望我的应用程序针对 PostgreSQL 运行
  • 我已将jooq-codegen-maven插件配置为使用 H2
    • 这是因为我不想让我的构建依赖于始终运行的 postgres

问题:

  1. 针对 H2 生成的代码是否与 postgres 的使用兼容?
  2. 这个用例有意义吗?
  3. 如果没有,如何正确解决(减少对运行数据库实例的依赖)?
    • 我可以(以某种方式)使用带有生成过程(或一些类似概念)的测试容器吗

谢谢

伊沃斯

0 投票
1 回答
252 浏览

java - 如何使用自定义转换器访问 jOOQ 生成的例程字段作为值?

我在从这个问题中已经提到的PL/pgSQL 用户定义函数(结果返回JSON 数据类型)访问生成例程的字段时遇到问题。

这是我get_all_orders()在 JSON 类型的 PL/pgSQL 中创建的函数的结果:

我正在尝试按照自定义数据类型绑定手册将例程作为字段访问,到目前为止我设法创建自定义转换器以便将org.jooq.JSON转换为io.vertx.core.json.JsonObject

...这是指向QueryResult 源代码的链接,我正在使用此方法来调用它(自定义创建的转换器):

我在以下方法中调用上述方法:

...这是在Routines.java 类中生成的方法,该方法在上面最后提到的代码中用于将值返回到dsl -> dsl.select(Routines.getAllOrders())语句部分的表达式中:

...和(最后)这是我的*.jooq.routines.GetAllOrders.java课:

顺便说一句,Vertx 库还使用JsonArray类,该类用于处理数组,但我看不到将已经生成的 org.jooq.JSON 映射到类型org.jooq.impl.JSONArray然后再映射到io.vertx.core.json.JsonArray类型的方法。

我是否遗漏了一些东西(我知道我正在处理生成的 Routine,但 jOOQ 手册中给出的示例仅包含 Table 字段)......或者我应该创建自定义数据类型绑定类
非常感谢任何建议/帮助。

更新1
我已按照评论中链接的问答中给出的说明进行操作,这就是我添加的内容,并且已经<forcedType>在我的 s 中pom.xml

...当我执行 Maven> Update Project + 检查强制更新快照/发布时,我总共收到 32 条错误消息:

JsonObject 无法解析

...和

JsonObject 无法解析为类型

...这是我生成的*.jooq.routines.GetAllOrders.java类:

我已经为这个生成器ClassicReactiveVertxGenerator提供了这些以编程方式创建的转换器(有关它的更多信息可在此处获得),用于io.vertx.core.json.JsonObject第一次提到的<forcedType>。任何建议如何解决这个问题?

UPDATE2
我也尝试过org.jooq.Converter像这样使用这个转换器(必须对 JSON 类使用合格的引用,否则它不会在 Generated Routine clases 中执行导入):

...我在生成的 GetAllOrders.java 类中得到了这个:

由于这不起作用,我试图通过创建JooqJsonConverter.java 自定义转换器类来解决这个问题,如下所示:

...并更改标签下的转换器:

...我得到相同的代码 GetAllOrders.java 类,差异很小

...并且只有这 8 个错误(4 个生成的 Routine 类中的每一个都有 2 个):

对于 JooqJsonConverter 类型,未定义方法 ofNullable(Class, Class, Object::toString, org.jooq.JSON.class::valueOf)

知道缺少什么/我做错了吗?先感谢您。

0 投票
1 回答
71 浏览

java - 如何修复为 jOOQ 中的 INPUT 参数生成正确的值类型,以便使用生成的用户定义的 PL/pgSQL 函数标签?


我在解决<forcedType>我生成的例程中用 PL/pgSQL 编写的存储函数的问题时遇到了问题。这个问题更具体地解决了我在这个问题中已经提出的问题,并且在这个问答中部分提供了答案。

这是我在 PL/pgSQL 中遇到问题的用户定义函数之一(我只显示一个,因为两个函数具有相同的 RETURN TYPEINPUT 参数):

由于我使用的是 Maven,这些是我用来执行转换的 pom.xml 强制类型(如上面链接的 Q&A中):

当我在Project Exporer>Maven>Update Project中右键单击我的项目并选中“强制更新..”复选框时,我收到以下两个错误:

类型不匹配:无法从 Parameter < String > 转换为 Parameter < Long >

...这就是我生成的GetBookByBookId.java类代码的样子:

将字符串值strParam传递给Long.valueOf( strParam )应该可以工作,但是在 jOOQ 中由于某种原因它不起作用。Java编译器不应该能够从org.jooq.Converter.ofNullable(Long.class, String.class, Object::toString, java.lang.Long::valueOf)传入的代码中推断出它<converter>......我是否缺少一些东西,究竟是什么?
非常感谢任何形式的帮助或建议。

0 投票
1 回答
86 浏览

java - 如何在使用 jooq 生成的 dao 插入/更新后获取插入/更新的对象

我使用 jooq 代码生成工具从我的 postgres DB 中的 dict_org 表生成了 DictOrgDao。这个 dao 有插入和更新等常用方法,但它们都返回 void。在使用 jooq 生成的 dao 插入/更新后,有什么方法可以获取插入/更新的对象?

0 投票
1 回答
156 浏览

jooq - 如何配置 jooq 以生成所有类型的特定表

我们如何需要添加配置,以便 jooq 只生成一个已配置的特定表,并且它也应该包括所有类型。

在现有项目中,他们禁用了表生成  <includeTables>false</includeTables> ,但现在我需要生成一个特定的表。如果我启用它为真,那么它会生成所有表。所以我尝试  <includes>Table_Name</includes>在此之后使用它只生成特定的表,并且不会生成所有其他的东西,比如 udts 类型。

0 投票
1 回答
1172 浏览

postgresql - 如何使用 liquibase 设置 jooq-codegen-maven 插件的 postgres 方言且没有数据库连接属性

我使用 liquibase 和 jooq,我需要直接从 liquibase xml 文件生成我的 pojo,但是我在用 Postgres 覆盖默认的“H2”方言时遇到了问题。实际上,我尝试通过插件“配置”部分中的属性设置方言,但它仍然使用 H2。有人可以问我如何让jooq在读取xml文件和生成java类时使用postgres方言。

这是使用的库版本

这是我的插件配置