[JOOQ使用转换器内联将字符串转换为枚举

问题描述 投票:1回答:1

如此处所问,对此#58538732的后续问题

根据Lukas Eder的建议,我写了EnumConverterInteger转换为DayOfWeek

public class DOWConverter extends EnumConverter<Integer, DayOfWeek>  {

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

[select现在看起来如下

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

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

带有错误消息:

线程“主”中的异常java.lang.Error:未解决的编译问题:不能访问类型为QueryFeaturesTask的封闭实例。必须使用类型为QueryFeaturesTask的封闭实例来限定分配(例如x.new A(),其中x是QueryFeaturesTask的实例)。

如上所述,当前无法在CodeGen时使用Converter。

java sql-server enums jooq
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.