在 jOOQ 中注册全局转换器

我有一段代码,如:


ctx.select()

   .from()

   ...

   .fetchInto(MyAwesomeClass.class)

MyAwesomeClass有一个自定义类型的字段(我们称之为MyLong),可以转换为/从Long。目前,jOOQ 无法在Long和之间转换MyLong:


org.jooq.exception.DataTypeException: Cannot convert from 1 (class java.lang.Long) to class foo.bar.MyLong

我想在jOOQ DSL配置要转换到注册一个转换器Long来MyLong。我有转换器,但我正在努力将其纳入 DSL 配置。可以选择为配置提供 ConverterProvider,我这样做了 - 但它似乎不起作用。


ConverterProvider 片段是这样的:


new DefaultConfiguration()

    .set(

        new ConverterProvider() {

          @Override

          public <T, U> Converter<T, U> provide(Class<T> tType, Class<U> uType) {

            if (tType == Long.class && uType == MyLong.class) {

              return (Converter<T, U>) Converter.of(Long.class, MyLong.class, MyLong::of, MyLong::toLong);

            } else {

              throw new UnsupportedOperationException();

            }

          }

        });

我知道这个 API 被标记为实验性的,但是有没有其他方法可以实现我想要的,而无需在代码生成端声明强制绑定或其他一些构造?


慕仙森
浏览 158回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java