Jooq 3.9 没有 link MySQL 列枚举
Jooq 3.9 doesn't link MySQL columns to enums
我正在将 jooq 从版本 3.4.1 更新到 3.9.3 并注意到 table 的模型MySQL 5.6 数据库中的 enum
字段是用 String
类型生成的。
字段对应的枚举是正确生成的,只是没有链接到table对应的pojo。
CREATE TABLE foo (
bar ENUM('BarBar') NOT NULL
}
这是为 table 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;
}
和 未 链接到 table pojo 的枚举,尽管在其名称中包含 Foo 前缀table:
@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 之间引入的,但我无法缩小范围发行说明。
有一个 issue 与此相对应,但它不应该上线,所以我的配置可能已过时。
发生这种情况的原因有两个:
jOOQ 中与 <outputSchemaToDefault/>
相关的错误
这看起来像错误
- #6367 - 当
<outputSchemaToDefault/>
为 true 时,PostgreSQL 枚举未从生成的表中正确链接
- #6395 - 当
<outputSchemaToDefault/>
设置为 true 时,Definition.getQualifiedName() 是错误的
这将在 jOOQ 3.10.0、3.9.4、3.8.8 中修复。该问题与将 <outputSchemaToDefault/>
标志设置为 true 有关。
您在配置中排除了枚举类型
<includes/>
和 <excludes/>
配置必须确保枚举类型包含在代码生成输出中。枚举类型是一种合成类型,其行为类似于 PostgreSQL 枚举类型。它有一个合成名称,由以下内容组成:[TABLE_NAME]_[COLUMN_NAME]
.
注意:在你的情况下,我假设这是正确完成的,因为你正在获取枚举类型本身。为了完整起见,我在这里添加这个,以防其他人有类似的问题。
我正在将 jooq 从版本 3.4.1 更新到 3.9.3 并注意到 table 的模型MySQL 5.6 数据库中的 enum
字段是用 String
类型生成的。
字段对应的枚举是正确生成的,只是没有链接到table对应的pojo。
CREATE TABLE foo (
bar ENUM('BarBar') NOT NULL
}
这是为 table 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;
}
和 未 链接到 table pojo 的枚举,尽管在其名称中包含 Foo 前缀table:
@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 之间引入的,但我无法缩小范围发行说明。
有一个 issue 与此相对应,但它不应该上线,所以我的配置可能已过时。
发生这种情况的原因有两个:
jOOQ 中与 <outputSchemaToDefault/>
相关的错误
这看起来像错误
- #6367 - 当
<outputSchemaToDefault/>
为 true 时,PostgreSQL 枚举未从生成的表中正确链接
- #6395 - 当
<outputSchemaToDefault/>
设置为 true 时,Definition.getQualifiedName() 是错误的
这将在 jOOQ 3.10.0、3.9.4、3.8.8 中修复。该问题与将 <outputSchemaToDefault/>
标志设置为 true 有关。
您在配置中排除了枚举类型
<includes/>
和 <excludes/>
配置必须确保枚举类型包含在代码生成输出中。枚举类型是一种合成类型,其行为类似于 PostgreSQL 枚举类型。它有一个合成名称,由以下内容组成:[TABLE_NAME]_[COLUMN_NAME]
.
注意:在你的情况下,我假设这是正确完成的,因为你正在获取枚举类型本身。为了完整起见,我在这里添加这个,以防其他人有类似的问题。