Java JOOQ 3.1生成的文件名与类名不同会导致编译错误

Java JOOQ 3.1生成的文件名与类名不同会导致编译错误,java,sql,jooq,Java,Sql,Jooq,生成一个oracle数据库。oracle软件包中有两个函数由于命名原因无法编译这两个函数。例如,pkg中有一个pl/sql函数get_minutes,生成为Getminutes.java,但类名为Getminutes,这会导致编译器错误: class GetMinutes is public - should be declared in filename GetMinutes.java. 从字面上看,其他100个函数的生成是正确的。你知道为什么生成会在这里下降吗?jOOQ默认情况下会将数据库

生成一个oracle数据库。oracle软件包中有两个函数由于命名原因无法编译这两个函数。例如,pkg中有一个pl/sql函数get_minutes,生成为Getminutes.java,但类名为Getminutes,这会导致编译器错误:

class GetMinutes is public - should be declared in filename GetMinutes.java.

从字面上看,其他100个函数的生成是正确的。
你知道为什么生成会在这里下降吗?

jOOQ默认情况下会将数据库中带有下划线的常见的
大写字母\u转换为Java中更常见的
PascalCase
类命名模式。当具有非常相似名称的过程、表等之间存在命名冲突时,这显然会导致问题

因此,jOOQ的代码生成器附带了生成器策略,它允许您在生成类、常量、引用、成员、方法等名称时挂接到代码生成器。有两种方法可以配置这些策略:

  • 以编程方式。功能更强大,但安装起来有点困难:
  • 配置上。功能不太强大,但很容易设置:

将这些策略配置为输出与数据库中完全相同的所有名称相对容易。jOOQ 3.8还将为这种行为提供一种开箱即用的策略(请参阅)。

您使用的jOOQ版本是什么?这听起来像是3-4年前修复的一个bug…嗨,它出现在Jooq3.1的标题中。事实证明,在所有情况下,这都是因为pkg中存在具有类似javastyle命名的函数。有两种方法:get_minutes和getMinutes。JooQ generator不喜欢这个,这是正确的。:)不知怎的,我没有看到标题。你试过升级吗?尽管如此,我认为升级并不能解决这个问题。将很快提供答案…我们能够通过创建两个新表来创建相同的问题-一个名为TEST_TABLE,另一个名为TESTTABLE