【问题标题】:JOOQ 3.1 generated filenames are different to the classname causes a compilation errorJOOQ 3.1 生成的文件名与类名不同导致编译错误
【发布时间】:2016-03-16 17:18:36
【问题描述】:

从 oracle 数据库生成。 oracle 包中有两个函数由于命名原因而无法编译。例如,在 pkg 中有一个 pl/sql 函数 get_minutes,它生成为 Getminutes.java,但类名是 GetMinutes,它会给出编译器错误:

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

从字面上看,其他 100 个函数都能正确生成。
有什么想法为什么会在这里下降吗?

【问题讨论】:

  • 您使用的是什么 jOOQ 版本?这听起来像是 3-4 年前修复的错误......
  • 嗨,它在 Jooq 3.1 的标题中。事实证明,在所有情况下都是因为 pkg 中有类似 javastyle 命名的函数。例如有两种方法get_minutes 和getMinutes。 JooQ 生成器不喜欢这样,这是正确的。
  • :) 不知何故没看到标题。你试过升级吗?虽然,我认为这个特定问题不会通过升级来解决。很快就会给出答案...
  • 能够通过创建两个新表来创建相同的问题 - 一个名为 TEST_TABLE,另一个名为 TESTTABLE

标签: java sql jooq


【解决方案1】:

jOOQ 默认将数据库中常见的UPPER_CASE_WITH_UNDERSCORES 命名模式转换为Java 中更常见的PascalCase 类命名模式。当名称非常相似的过程、表等之间存在命名冲突时,这显然会导致问题。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-01
    • 1970-01-01
    • 2012-12-31
    • 2012-08-08
    • 1970-01-01
    • 2021-11-25
    • 2013-02-15
    相关资源
    最近更新 更多