[英]Jooq 3.9 doesn't link MySQL columns to enums
我正在将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.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版本。 我想知道这是一个错误,还是很可能是我身边缺少一些配置。
此更改是在版本3.8.8和3.9.0之间引入的,但我无法从发行说明中缩小范围。
有一个问题对应于此但它不应该上线,所以它可能是我过时的配置。
有两种原因可能导致这种情况发生:
<outputSchemaToDefault/>
相关的错误 这看起来像错误
<outputSchemaToDefault/>
为true时,PostgreSQL枚举无法从生成的表中正确链接 <outputSchemaToDefault/>
设置为true时,Definition.getQualifiedName()错误 这将在jOOQ 3.10.0,3.9.4,3.8.8中修复。 该问题与将<outputSchemaToDefault/>
标志设置为true有关。
<includes/>
和<excludes/>
配置必须确保包含枚举类型作为代码生成输出。 枚举类型是一种合成类型,其行为类似于PostgreSQL枚举类型。 它的合成名称来自: [TABLE_NAME]_[COLUMN_NAME]
。
注意:在你的情况下,我假设这是正确完成的,因为你自己获得了枚举类型。 我在这里添加这个是为了完整性,以防其他人有类似的问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.