当前位置: 首页 > 知识库问答 >
问题:

JOOQ将字符串转换为Enum,并使用转换器内联

焦阎宝
2023-03-14

正如在这里被问及的,这个#58538732的后续问题

根据Lukas Eder的建议,我编写了一个EnumConverter,将整数转换为DayOfWeek

public class DOWConverter extends EnumConverter<Integer, DayOfWeek>  {

    public DOWConverter()
    {
        super(Integer.class, DayOfWeek.class);           
    }               
}

选择现在看起来如下所示

DataType<DayOfWeek> typeDOW = SQLDataType.INTEGER.asConvertedDataType(new DOWConverter() /*ERROR*/);
Field<DayOfWeek> fieldDOW = DSL.field("{0}", typeDOW, lecture.DAY_OF_WEEK);

create.select( ..., fieldDOW, ...)...

出现以下错误消息:

线程“main”java.lang中出现异常。错误:未解决的编译问题:
无法访问QueryFeaturesTask类型的封闭实例。必须使用QueryFeaturesTask类型的封闭实例限定分配(例如,x.new A(),其中x是QueryFeaturesTask的实例)。

如上所述,在CodeGen时间使用转换器目前不是一种选择。

共有1个答案

陈泰宁
2023-03-14

似乎您将DOWConverter放在了另一个类中,从而创建了一个内部类。我建议您将转换器放在顶级,放在它自己的文件中,使其成为顶级类。如果必须创建嵌套类,请确保它不是内部类,方法是将其设置为静态:

public class Enclosing {
    // Make this class here static:
    public static class DOWConverter extends EnumConverter<Integer, DayOfWeek> {
        public DOWConverter() {
            super(Integer.class, DayOfWeek.class);           
        }               
    }
}

Oracle关于嵌套类的教程很好地解释了这一点。

 类似资料:
  • 在我的Oracle数据库中,我有存储为VARCHAR的数量值。从数据库中检索记录时,我希望将它们映射到一个POJO,其中金额值表示为double。不幸的是,我不能使用强制类型,因为在数据库中,所有内容都存储为VARCHAR,并且没有模式将列标识为包含金额值的列。 我正在查看jOOQ转换器,这似乎是我想要的。因此,我为此创建了一个jOOQ转换器: 然而,每当我想使用将数据库记录映射到我的POJO时,

  • 我只是无法在c中转换不同的数据类型,我知道c是一种强类型语言,所以我在这里使用了,但我面临一个问题,错误消息是 从“std::string{aka std::basic_string}类型转换为“int”类型的static_

  • 我想发送一个内联SVG图像到PHP脚本转换为PNG与Imagick.为此,我必须知道如何在内联SVG上获得一个Base64字符串。对于画布对象,它是一个简单的“. toDataURL()”,但这不适用于内联SVG,因为它不是元素的全局函数。 http://jsfiddle.net/nikolang/ccx195qj/1/ 但是如何为内联SVG实现这一点?

  • 我正在使用jooq的DSL。在我的Java代码中选择,我有需要从字符串中确定索引的场景。使用获取所需的索引值作为字符串,但DSL中不支持将其转换为数字的方法。示例: 嵌套的子字符串需要转换为数字

  • 问题内容: 如何在Java(Android)中将字符串转换为Uri?即: myUri = ???; 问题答案: 您可以使用静态方法从

  • 问题内容: 如何将输入的生日字符串(如02 26 1991)放入公历? 我尝试首先解析它,但是它一直给我一条错误消息,所以我不太确定自己在做什么错。在此日期之前,我还有其他输入数据。一个是另一个字符串,一个是双精度值。 问题答案: 使用解析日期,然后将其分配给。 第三行可以替换为: 但我更喜欢第一个版本。