我正在将jOOQ与Postgresql一起使用,以从表中选择一个枚举值。
List<my.project.jooq.enums.Color> colors =
dsl.selectDistinct(TABLE.T_COLOR.as("color"))
.from(TABLE).fetch()
.into(my.project.jooq.enums.Color.class);
无论如何,我得到了例外:
org.jooq.exception.MappingException: No matching constructor found on type class my.project.jooq.enums.Color for record org.jooq.impl.DefaultRecordMapper@7c66447f
我看到fetch()
它将返回Result<Record1<my.project.model.jooq.enums.Color>>
,所以我想知道是否有一种方法可以像使用任何pojo一样立即将Color枚举提取到列表中。
如何获取枚举值?
从jOOQ 3.7开始,尚不支持此功能,但jOOQ 3.8中将支持此功能(请参阅#5154)。
不过,您可以通过以下方式轻松地将字符串列映射到您的Enum
类型
List<my.project.jooq.enums.Color> colors =
dsl.selectDistinct(TABLE.T_COLOR)
.from(TABLE)
.fetch()
.map(rec -> my.project.jooq.enums.Color.valueOf(rec.getValue(TABLE.T_COLOR)));
如果您my.project.jooq.enums.Color
是由jOOQ从PostgreSQLenum
数据类型生成的,则无需专门映射任何内容,jOOQ会自动为您完成此操作:
List<my.project.jooq.enums.Color> colors =
dsl.selectDistinct(TABLE.T_COLOR)
.from(TABLE)
.fetch(TABLE.T_COLOR);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句