Java JOOQ使用转换器将字符串强制转换为枚举

Java JOOQ使用转换器将字符串强制转换为枚举,java,sql-server,enums,jooq,Java,Sql Server,Enums,Jooq,在寻找将我的字符串字段强制转换为枚举的方法时,我在.cast()方法中使用了stub。调用时,它会抛出一个sqldialennotsupportedException 方言已在上下文DSLContext create=DSL.using(conn,sqldialent.SQLSERVER2014)中设置为SQLSERVER2014 对应的行: create.select( ... lecture.DAY_OF_WEEK.cast(DayOfWeek.class), ... ); 完整错误:

在寻找将我的字符串字段强制转换为枚举的方法时,我在
.cast()
方法中使用了stub。调用时,它会抛出一个
sqldialennotsupportedException

方言已在上下文
DSLContext create=DSL.using(conn,sqldialent.SQLSERVER2014)中设置为
SQLSERVER2014

对应的行:

create.select( ... lecture.DAY_OF_WEEK.cast(DayOfWeek.class), ... );  
完整错误:

org.jooq.exception.SQLDialectNotSupportedException: Type class java.time.DayOfWeek is not supported in dialect null
at org.jooq.impl.DefaultDataType.getDataType(DefaultDataType.java:944)
at org.jooq.impl.DefaultDataType.getDataType(DefaultDataType.java:880)
at org.jooq.impl.AbstractField.cast(AbstractField.java:256)
at de.esteam.lecturedb.jooq.Classes.Startup.getStandardExample(Startup.java:218)
at de.esteam.lecturedb.jooq.Classes.Startup.main(Startup.java:54)
我试图用转换器实现对枚举的转换,但无法使其运行

有没有办法将转换器转换到
cast()
中,或者有没有其他办法将字符串转换到我找不到的枚举中?

这里不能使用
cast()
,因为这需要jOOQ了解如何将数据类型转换为SQL中的自定义类型。您要做的是客户端转换,理想情况下,这是使用
转换器实现的

一旦实现了
转换器
,建议使用它的方法是使用代码生成器将其附加到生成的代码:


java.time.DayOfWeek
com.example.YourConverter
(?i:一周中的第二天)
如果这不是一个选项,您可以创建一个“转换”字段引用,如下所示:

// I'm assuming you're storing the data as an INTEGER
DataType<DayOfWeek> type = SQLDataType.INTEGER.asConvertedDataType(new YourConverter());
Field<DayOfWeek> field = DSL.field("{0}", type, lecture.DAY_OF_WEEK);

// And now use that instead
create.select(field)...
//我假设您将数据存储为整数
DataType type=SQLDataType.INTEGER.asConvertedDataType(newyourconverter());
Field=DSL.Field(“{0}”,类型,讲座。每周一天);
//现在用它来代替
创建。选择(字段)。。。

但我真的建议将转换器附加到生成的代码中,以获得最大的便利。

谢谢,这正是我想要的。但是我不能使用第一种方法(现在),所以它必须是第二种方法。我创建了转换器
public类DOWConverter extensed EnumConverter{public DOWConverter(){super(Integer.class,DayOfWeek.class);}
但是我得到了一个错误:
new DOWConverter()上没有可访问的QueryFeaturesTask类型的关闭实例
从您的suggestion@recklessGreed你能问一个新问题吗?注释部分对于代码和调试代码来说不是很好…当然!先谢谢你。