Java Jooq 3.9没有';t将MySQL列链接到枚举
我正在将jooq从版本3.4.1更新为3.9.3,并注意到在MySQL 5.6数据库中有Java Jooq 3.9没有';t将MySQL列链接到枚举,java,mysql,enums,jooq,Java,Mysql,Enums,Jooq,我正在将jooq从版本3.4.1更新为3.9.3,并注意到在MySQL 5.6数据库中有enum字段的表的模型是用String类型生成的 字段对应的枚举已正确生成,只是没有链接到表对应的pojo CREATE TABLE foo ( bar ENUM('BarBar') NOT NULL } 这是为表Foo生成的Pojo示例: @Generated( value = { "http://www.jooq.org", "jOOQ version:3.9
enum
字段的表的模型是用String
类型生成的
字段对应的枚举已正确生成,只是没有链接到表对应的pojo
CREATE TABLE foo (
bar ENUM('BarBar') NOT NULL
}
这是为表Foo生成的Pojo示例:
@Generated(
value = {
"http://www.jooq.org",
"jOOQ version:3.9.0"
},
comments = "This class is generated by jOOQ"
)
public class Foo {
private String bar;
}
以及未链接到表pojo的枚举,尽管其名称中包含表的Foo前缀:
@Generated(
value = {
"http://www.jooq.org",
"jOOQ version:3.9.0"
},
comments = "This class is generated by jOOQ"
)
public enum FooBar implements EnumType {
BarBar("BarBar");
private final String literal;
// ...
}
我没有改变任何配置,只是jooq版本。我想知道这是否是一个bug,或者很可能是我这边缺少了一些配置
此更改是在版本3.8.8和3.9.0之间引入的,但我无法从发行说明中缩小范围
有一种与此相对应的配置,但它不应该上线,因此我认为它可能是过时的配置。发生这种情况的原因有两个: jOOQ中与
这看起来像虫子
- -当
为true时,无法从生成的表正确链接PostgreSQL枚举 - -Definition.getQualifiedName()在
设置为true时出错
标志设置为true有关
您正在使用配置排除枚举类型
和
配置必须确保枚举类型包含在代码生成输出中。枚举类型是一种合成类型,其行为类似于PostgreSQL枚举类型。它有一个合成名称,由以下内容组成:[表名称]\uu[列名称]
注意:在您的情况下,我假设这是正确的,因为您得到的是枚举类型本身。为了完整起见,我在这里添加了这个,以防其他人有类似的问题。这可能是一个bug,我有一点感觉,这可能与MySQL架构名称有趣的区分大小写(或不区分大小写,取决于上下文)有关,即这一个:。
foo
表的模式名(区分大小写)是什么?@Lukas Eder再次感谢您的帮助。模式名称都是小写的,我们称之为sguard。该表使用snake\u大小写命名,与此完全相同:foo\u bar。表中的枚举字段是用CamelCase定义的,有点像,因为第一个字母也是大写字母。好的,谢谢您提供的信息。已知问题仅与架构名称有关。我将不得不继续调查这一点,虽然可能需要一段时间,因为我还不能复制它…其他信息,MySQL版本是5.6.32。最初枚举字段只有一个值,我现在尝试使用两个值,但同样的问题也发生了。感谢提供更多信息。这看起来确实像个虫子。我已注册一个问题:。我们将尽快确认。解决方法可能是在这里使用自定义转换器将列显式映射到其枚举类型