JOOQ string emitido a Enum con el convertidor en línea

recklessGreed:

Como pidió aquí el seguimiento a esta pregunta # 58538732

Según lo sugerido por Lukas Eder me escribió una EnumConverterpara convertir la Integera unaDayOfWeek

public class DOWConverter extends EnumConverter<Integer, DayOfWeek>  {

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

El selectahora ve la siguiente

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

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

Con el mensaje de error:

Excepción en el hilo "principal" java.lang.Error: no resuelto problema de compilación:
No se encierra instancia de tipo QueryFeaturesTask es accesible. Debe calificar la asignación con una instancia que encierra de tipo QueryFeaturesTask (egxnew A () en la que x es una instancia de QueryFeaturesTask).

Como se ha dicho, utilizando el convertidor en CodeGen Tiempo actualmente no es una opción.

Lukas Eder:

Parece que usted puso su DOWConverterinterior de otra clase, creando así una clase interna . Recomiendo colocar el convertidor en el nivel superior, en su propio archivo, por lo que es una clase de nivel superior. Si debe crear una clase anidada, asegúrese de que no es una clase interna por lo que es estática:

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

El tutorial de Oracle en clases anidadas explica esto muy bien .

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=335561&siteId=1
Recomendado
Clasificación