使用 jOOQ,如何只生成包的特定成员?
Using jOOQ, how to generate only specific members of a package?
我试图避免为我不需要的存储过程生成代码。
生成器配置(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 手册部分,但没有找到解决我的问题的方法。
目前,<includes>
和 <excludes>
只匹配包,不匹配包中包含的过程/函数/类型。更准确地说,正则表达式匹配架构级对象。
有一个现有的标志将此行为扩展到表中的列(使用 <includeExcludeColumns/>
),但是从 jOOQ 3.9 开始,包内的对象不存在这样的标志
我已经创建了一个功能请求以在未来的 jOOQ 版本中实现它:
https://github.com/jOOQ/jOOQ/issues/6400
解决方法:
- 您可以扩展 jOOQ-meta 中的
org.jooq.util.oracle.OracleDatabase
和 org.jooq.util.oracle.OraclePackageDefinition
以过滤掉那些您不感兴趣的过程。
- 您可以覆盖 jOOQ-codegen 中的
JavaGenerator.generatePackage()
方法以防止生成不需要的对象的代码
- 您可以 post 处理生成的代码并再次删除不需要的对象和对这些对象的引用。
我试图避免为我不需要的存储过程生成代码。 生成器配置(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 手册部分,但没有找到解决我的问题的方法。
目前,<includes>
和 <excludes>
只匹配包,不匹配包中包含的过程/函数/类型。更准确地说,正则表达式匹配架构级对象。
有一个现有的标志将此行为扩展到表中的列(使用 <includeExcludeColumns/>
),但是从 jOOQ 3.9 开始,包内的对象不存在这样的标志
我已经创建了一个功能请求以在未来的 jOOQ 版本中实现它: https://github.com/jOOQ/jOOQ/issues/6400
解决方法:
- 您可以扩展 jOOQ-meta 中的
org.jooq.util.oracle.OracleDatabase
和org.jooq.util.oracle.OraclePackageDefinition
以过滤掉那些您不感兴趣的过程。 - 您可以覆盖 jOOQ-codegen 中的
JavaGenerator.generatePackage()
方法以防止生成不需要的对象的代码 - 您可以 post 处理生成的代码并再次删除不需要的对象和对这些对象的引用。