JOOQ 3.1 生成的文件名与类名不同导致编译错误
JOOQ 3.1 generated filenames are different to the classname causes a compilation error
正在生成 oracle 数据库。由于命名原因,oracle 包中有两个函数无法编译。 EG 在 pkg 中有一个 pl/sql 函数 get_minutes,它生成为 Getminutes.java,但 class 名称是 GetMinutes,这会导致编译器错误:
class GetMinutes is public - should be declared in filename GetMinutes.java.
从字面上看,正确生成了 100 个其他函数。
知道为什么生成在这里下降了吗?
jOOQ 默认将数据库中常见的 UPPER_CASE_WITH_UNDERSCORES
命名模式转换为 Java 中更常见的 PascalCase
class 命名模式。当具有非常相似名称的过程、表等之间存在命名冲突时,这显然会导致问题。
出于这个原因,jOOQ 的代码生成器附带了生成器策略,它允许您在生成 class、常量、引用、成员、方法等名称时连接到代码生成器。有两种配置这些策略的方法:
- 以编程方式。更强大,但更难设置:http://www.jooq.org/doc/latest/manual/code-generation/codegen-generatorstrategy
- 配置。不太强大,但很容易设置:http://www.jooq.org/doc/latest/manual/code-generation/codegen-matcherstrategy
配置这些策略以输出与数据库中完全相同的所有名称相对容易。 jOOQ 3.8 也将为这种行为提供开箱即用的策略(参见 #3570)。
正在生成 oracle 数据库。由于命名原因,oracle 包中有两个函数无法编译。 EG 在 pkg 中有一个 pl/sql 函数 get_minutes,它生成为 Getminutes.java,但 class 名称是 GetMinutes,这会导致编译器错误:
class GetMinutes is public - should be declared in filename GetMinutes.java.
从字面上看,正确生成了 100 个其他函数。
知道为什么生成在这里下降了吗?
jOOQ 默认将数据库中常见的 UPPER_CASE_WITH_UNDERSCORES
命名模式转换为 Java 中更常见的 PascalCase
class 命名模式。当具有非常相似名称的过程、表等之间存在命名冲突时,这显然会导致问题。
出于这个原因,jOOQ 的代码生成器附带了生成器策略,它允许您在生成 class、常量、引用、成员、方法等名称时连接到代码生成器。有两种配置这些策略的方法:
- 以编程方式。更强大,但更难设置:http://www.jooq.org/doc/latest/manual/code-generation/codegen-generatorstrategy
- 配置。不太强大,但很容易设置:http://www.jooq.org/doc/latest/manual/code-generation/codegen-matcherstrategy
配置这些策略以输出与数据库中完全相同的所有名称相对容易。 jOOQ 3.8 也将为这种行为提供开箱即用的策略(参见 #3570)。