【问题标题】:DataTypeException with Jooq newRecord and an enum带有 Jooq newRecord 和枚举的 DataTypeException
【发布时间】:2016-09-30 07:28:35
【问题描述】:

我有一个名为 Group 的简单对象,其中包含一个 GroupType 枚举。

public enum GroupType {
    PRIMARY,
    SECONDARY
}

我构造一个新的Group 并保存它

Group group = new Group();
group.setName(PRIMARY.name());
group.setType(PRIMARY);
Group g = save();

save 开头是

R record = (R) dsl.newRecord(Groups.GROUPS, group);

这行代码在抛出

  Caused by: org.jooq.exception.DataTypeException: Cannot convert from PRIMARY (class com.domain.entities.support.GroupType) to class com.domain.jooq.generated.enums.GroupType
    at org.jooq.tools.Convert$ConvertAll.fail(Convert.java:1113)
    at org.jooq.tools.Convert$ConvertAll.from(Convert.java:1002)
    at org.jooq.tools.Convert.convert0(Convert.java:316)
    at org.jooq.tools.Convert.convert(Convert.java:308)
    at org.jooq.tools.Convert.convert(Convert.java:380)
    at org.jooq.impl.DefaultDataType.convert(DefaultDataType.java:698)
    at org.jooq.impl.Tools.setValue(Tools.java:1975)
    at org.jooq.impl.AbstractRecord.from(AbstractRecord.java:829)

枚举如何与newRecord 一起使用?

【问题讨论】:

  • 您使用的是什么数据库?您是否从数据库中生成了枚举类?
  • 使用 Postgres 9.5。是的,我已经从数据库中生成了枚举类。基本上,我最终得到了一个 GroupType 枚举,然后是一个 Jooq 生成的 GroupType (同名,不同的包)。我的 pom.xml 中没有任何特别之处,其中定义了生成配置。只是java.time 的一些自定义类型。这是正确的方法还是枚举需要的东西?

标签: java sql enums jooq


【解决方案1】:

错误信息说:

Cannot convert from PRIMARY (class com.domain.entities.support.GroupType)
                          to class com.domain.jooq.generated.enums.GroupType

您的GroupType 枚举似乎使用了两种不同的类型。 jOOQ 只了解 jOOQ 生成的枚举类型 (com.domain.jooq.generated.enums.GroupType),而不是您自己的 (com.domain.entities.support.GroupType)。

如果您真的想使用自己的枚举类型,则需要在TYPE 列上注册一个Converter 以在两种类型之间进行转换。

【讨论】:

    猜你喜欢
    • 2014-04-07
    • 2022-11-22
    • 2021-07-05
    • 2021-08-01
    • 1970-01-01
    • 2018-05-26
    • 1970-01-01
    • 1970-01-01
    • 2020-04-19
    相关资源
    最近更新 更多