【问题标题】:Using jOOQ, how to generate only specific members of a package?使用 jOOQ,如何只生成包的特定成员?
【发布时间】:2017-12-14 04:42:06
【问题描述】:

我试图避免为我不需要的存储过程生成代码。 生成器配置(maven 插件)的相关部分如下所示:

<includes>
    SOME_SCHEMA\.SOME_PACKAGE\.MyProcedure
</includes>
<excludes></excludes>

很遗憾,这与任何内容都不匹配。使用

<includes>
    SOME_SCHEMA\.SOME_PACKAGE
</includes>

有效,但当然会为整个包生成代码。

MyProcedure 是数据库中定义的过程的准确区分大小写的名称。我也尝试过使用

SOME_SCHEMA\.SOME_PACKAGE\.MYPROCEDURE

,没有成功。

编辑 - 研究:我查看了code generation 上的 jOOQ 手册部分,但没有找到解决问题的方法。

【问题讨论】:

    标签: code-generation jooq


    【解决方案1】:

    目前,&lt;includes&gt;&lt;excludes&gt; 仅匹配包,不匹配包中包含的过程/函数/类型。更准确地说,正则表达式匹配模式级对象。

    有一个现有的标志可以将此行为扩展到表中的列(使用&lt;includeExcludeColumns/&gt;),但从 jOOQ 3.9 开始,包内的对象不存在这样的标志

    我创建了一个功能请求以在未来的 jOOQ 版本中实现这一点: https://github.com/jOOQ/jOOQ/issues/6400

    解决方法:

    • 您可以在 jOOQ-meta 中扩展 org.jooq.util.oracle.OracleDatabaseorg.jooq.util.oracle.OraclePackageDefinition 以过滤掉那些您不感兴趣的过程。
    • 您可以覆盖 jOOQ-codegen 中的 JavaGenerator.generatePackage() 方法,以防止生成不需要的对象的代码
    • 您可以对生成的代码进行后处理并再次删除不需要的对象和对这些对象的引用。

    【讨论】:

      猜你喜欢
      • 2019-12-21
      • 2016-07-22
      • 1970-01-01
      • 1970-01-01
      • 2016-02-19
      • 2020-11-11
      • 1970-01-01
      • 2017-12-08
      • 2021-12-17
      相关资源
      最近更新 更多