Java 字段的意外更改';将自定义“绑定”添加到postgres枚举类型的“TableField”时使用s“DataType”`

Java 字段的意外更改';将自定义“绑定”添加到postgres枚举类型的“TableField”时使用s“DataType”`,java,sql,postgresql,jooq,Java,Sql,Postgresql,Jooq,我们在Postgres 9.5中使用JOOQ 3.7.3。我们使用Postgres的enum类型,并将它们映射到我们自己的(手写的)Java枚举。到目前为止,JOOQ元模型如下所示: TableField核算\u类型= createField(“会计类型”, org.jooq.util.postgres.PostgresDataType.VARCHAR.asEnumDataType(com.us.app.schema.enums.AccountingTypeEnum.class), 这 "");

我们在Postgres 9.5中使用JOOQ 3.7.3。我们使用Postgres的
enum
类型,并将它们映射到我们自己的(手写的)Java枚举。到目前为止,JOOQ元模型如下所示:

TableField核算\u类型=
createField(“会计类型”,
org.jooq.util.postgres.PostgresDataType.VARCHAR.asEnumDataType(com.us.app.schema.enums.AccountingTypeEnum.class),
这
"");
使用JOOQ生成的枚举可以轻松地生成模式,但我们需要大量显式映射。我们希望在JOOQ模型中直接使用我们自己的枚举类型,并在JOOQ生成器配置中为每个类型定义自定义绑定:


AccountingTypeEnum
com.us.own.enums.AccountingType
com.us.own.enums.AccountingType.AccountingTypeJooqBinding
...
AccountingTypeEnum
*会计类型
奇怪的是,这不仅影响字段的值类型,还影响
数据类型
,该数据类型被更改为
DefaultDataType.getDefaultDataType(“用户定义”)
,即
数据类型

TableField核算\u类型=
createField(“会计类型”,
org.jooq.impl.DefaultDataType.getDefaultDataType(“用户定义”),
这
"",
新AccountingTypeJooqBinding());

这是为什么?我能确保我得到它以前使用的
数据类型吗?

经过一些实验,结果证明这确实是JOOQ生成器中的一个错误,它影响3.7.3,但在3.10.3中不再存在。是时候升级了

可以肯定的是:你能用3.10.2复制这个吗?此外,这种效果是否仅取决于您的
匹配?可能不是因为这个枚举根本没有生成,或者是因为它位于排除的架构中,或者是因为您关闭了枚举生成功能?@LukasEder:感谢您的快速响应。关于版本,我会给你回复的。我确信
forcedType
表达式是唯一的触发器,因为我在同一个模式中有表,其中包含/不包含
USER-DEFINED
类型,只要表达式不够通用……好的,我将尝试重新生成它。可能是个虫子。您可以尝试的另一件事是:它是否也发生在
转换器
而不是
绑定
?或者,换言之,如果您想依赖jOOQ生成的枚举类型,那么您喜欢在这里使用绑定的原因是什么?使用转换器不会改变用户定义的效果。我使用绑定是因为给定了
用户定义的
数据类型,Postgres拒绝插入,因为他们缺少必要的强制转换
::accounting_type
@LukasEder:你太好了。。。我们已经找到了一个解决方法,希望很快就能升级。一切都好,谢谢!:-)修复可能与。