问题标签 [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.
maven - 如何配置jooq-codegen-maven,所以我只能手动运行而不是每次编译
目前我的 jooq-codegen-maven 插件在每次编译时都会运行,从而减慢了构建速度。在我更改数据库架构后,我只想手动运行它。如何更改插件配置以实现此目的?
sql - Jooq 文本数组生成为对象数组
给定以下sql
并指示代码生成器使用 DDLDatabase 生成的项的形式为
在文档中环顾四周,我找不到如何将其映射到String[]
. 同样适用于varchar
和varchar(255)
。我不应该在这里使用强制类型,因为至少三个中的一个应该是有效的数据类型,而不是回退到OTHER
它发生的情况UUID
(我看到有一个强制类型的示例)
我是在做/理解错误还是这是预期的行为?
我使用的数据库是 PostGres,生成器配置如下
先感谢您
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:
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.java
,DefaultCatalog.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 中创建的函数的结果:
jooq - JOOQ maven 代码生成和使用不同的数据库进行构建时和运行时
假设我有以下用例:
- 我希望我的应用程序针对 PostgreSQL 运行
- 我已将
jooq-codegen-maven
插件配置为使用 H2- 这是因为我不想让我的构建依赖于始终运行的 postgres
问题:
- 针对 H2 生成的代码是否与 postgres 的使用兼容?
- 这个用例有意义吗?
- 如果没有,如何正确解决(减少对运行数据库实例的依赖)?
- 我可以(以某种方式)使用带有生成过程(或一些类似概念)的测试容器吗
谢谢
伊沃斯
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)
知道缺少什么/我做错了吗?先感谢您。
java - 如何修复为 jOOQ 中的 INPUT 参数生成正确的值类型,以便使用生成的用户定义的 PL/pgSQL 函数标签?
我在解决<forcedType>
我生成的例程中用 PL/pgSQL 编写的存储函数的问题时遇到了问题。这个问题更具体地解决了我在这个问题中已经提出的问题,并且在这个问答中部分提供了答案。
这是我在 PL/pgSQL 中遇到问题的用户定义函数之一(我只显示一个,因为两个函数具有相同的 RETURN TYPE和INPUT 参数):
由于我使用的是 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>
......我是否缺少一些东西,究竟是什么?
非常感谢任何形式的帮助或建议。
java - 如何在使用 jooq 生成的 dao 插入/更新后获取插入/更新的对象
我使用 jooq 代码生成工具从我的 postgres DB 中的 dict_org 表生成了 DictOrgDao。这个 dao 有插入和更新等常用方法,但它们都返回 void。在使用 jooq 生成的 dao 插入/更新后,有什么方法可以获取插入/更新的对象?
jooq - 如何配置 jooq 以生成所有类型的特定表
我们如何需要添加配置,以便 jooq 只生成一个已配置的特定表,并且它也应该包括所有类型。
在现有项目中,他们禁用了表生成 <includeTables>false</includeTables>
,但现在我需要生成一个特定的表。如果我启用它为真,那么它会生成所有表。所以我尝试 <includes>Table_Name</includes>
在此之后使用它只生成特定的表,并且不会生成所有其他的东西,比如 udts 类型。
postgresql - 如何使用 liquibase 设置 jooq-codegen-maven 插件的 postgres 方言且没有数据库连接属性
我使用 liquibase 和 jooq,我需要直接从 liquibase xml 文件生成我的 pojo,但是我在用 Postgres 覆盖默认的“H2”方言时遇到了问题。实际上,我尝试通过插件“配置”部分中的属性设置方言,但它仍然使用 H2。有人可以问我如何让jooq在读取xml文件和生成java类时使用postgres方言。
这是使用的库版本
这是我的插件配置