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

JOOQ慢代码生成

端木震博
2023-03-14

是否有任何参数可以在jooq代码生成期间打开/关闭下一个查询的执行?

SELECT "SYS"."ALL_OBJECTS"."OWNER",
     "SYS"."ALL_OBJECTS"."OBJECT_NAME",
     "SYS"."ALL_OBJECTS"."OBJECT_ID",
     "SYS"."ALL_PROCEDURES"."AGGREGATE"
FROM "SYS"."ALL_OBJECTS"
     LEFT OUTER JOIN "SYS"."ALL_PROCEDURES"
        ON (    "SYS"."ALL_OBJECTS"."OWNER" =
                   "SYS"."ALL_PROCEDURES"."OWNER"
            AND "SYS"."ALL_OBJECTS"."OBJECT_NAME" =
                   "SYS"."ALL_PROCEDURES"."OBJECT_NAME")
WHERE (    UPPER ("SYS"."ALL_OBJECTS"."OWNER") IN ( 'MYSCHEMA')
      AND "SYS"."ALL_OBJECTS"."OBJECT_TYPE" IN ( 'FUNCTION', 'PROCEDURE'))
ORDER BY "SYS"."ALL_OBJECTS"."OWNER" ASC,
     "SYS"."ALL_OBJECTS"."OBJECT_NAME" ASC,
     "SYS"."ALL_OBJECTS"."OBJECT_ID" ASC

在有大量模式和对象的数据库上,执行大约需要一个小时

共有1个答案

荆梓
2023-03-14

jOOQ运行的查询的一个主要问题是UPPER(OWNER)表达式。这是jOOQ2.4(#1418)引入的,以防止用户意外使用小写模式名称时的错误配置。该功能基于一个错误的假设,即区分大小写的用户是不可能的。它们当然是可能的(即使很少),所以#1418是错误的。我为这个问题创建了两个问题:

  • #5989:通过避免所有者列上的函数

同时,您还有一些可能的解决办法

您总是可以重写jooq-codemen中的JavaGenerator,并重新实现一些方法,包括GeneratePackages()GenerateRoutines()为空。这样,相关代码就完全不会执行了。

当然,这意味着你不会得到任何生成的包和例程。

有一个新的配置选项,您可以在其中执行与上述配置相同的操作:

<configuration>
  <generator>
    <database>
      <includeRoutines>false</includeRoutines>
      <includePackages>false</includePackages>
      ...

另见:https://www.jooq.org/doc/latest/manual/code-generation/codegen-advanced/codegen-config-include-object-types

 类似资料:
  • 我更改了数据库中的一些表,所以我想生成记录、键、类等。但是每次我这样做时,它总是跳过jooq代码生成。 [INFO]--jooq-codegen-maven:3.11.10:generate(默认cli)@http网关--[INFO]跳过jooq代码生成 为了运行Jooq代码生成,我应该执行哪个mvn cmd?现在我使用: 谢谢

  • 我使用jOOQ程序代码生成数据库,但现在我遇到了一些问题。在数据库中,我有表A和表B。第一次都生成了pojo、dao、接口等。经过一段时间的开发,我发现表A需要添加一些字段或修改一些字段,所以我不得不再次编码,然后jOOQ代码生成器将覆盖现有的代码,这让我很难过。当我在排除表的情况下使用“排除A”时,发现只生成了表A的数据,表B将被删除。我不知道如何处理这个问题。我的代码生成器如下:

  • 我目前正在评估Jooq。我们在创建join语句时遇到了一些问题,如下所示: 但这并不奏效。我仍然有以为类型的字段。那么除了更改表列类型之外,我还能做些什么呢?

  • 我试图使用JOOQ连接到HSQLDB,但我失败了,这里是错误消息: 此查询也会在HSQLDB Manager上失败(与JOOQ代码生成器的错误相同): 此查询工作正常: 我认为问题出在“cc”限定符上(在查询返回的“CONSTRAINT_NAME”字段上),这是HSQLDB错误吗? 我正在使用: HSQLDB 2.3.1 JOOQ 3.2.3 谢谢Ciccio

  • 当使用jOOQ的代码生成器时,它会拆分嵌套类以防止大型静态初始化器,而可能包含嵌套类,例如,... 我使用带有<代码> 但使用<代码> 这是jOOQ生成器中的错误吗?或者我需要添加其他配置

  • 我正在使用sybase ASE作为我的数据库。当我尝试使用jooq生成代码时,它显示以下警告。但是没有生成代码。任何帮助,请提前感谢! --