jOOQ 并选择一个枚举字段到枚举对象中
jOOQ and selecting an enum field into enum object
我正在将 jOOQ 与 Postgresql 结合使用来 select 来自 table 的枚举值。
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()
将 return Result<Record1<my.project.model.jooq.enums.Color>>
,所以我想知道是否有一种方法可以立即将 Color 枚举提取到列表中,就像我对任何 pojo 所做的那样。
如何获取枚举值?
从 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 从 PostgreSQL enum
数据类型生成的,你不需要专门映射任何东西,jOOQ 会自动为你做:
List<my.project.jooq.enums.Color> colors =
dsl.selectDistinct(TABLE.T_COLOR)
.from(TABLE)
.fetch(TABLE.T_COLOR);
我正在将 jOOQ 与 Postgresql 结合使用来 select 来自 table 的枚举值。
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()
将 return Result<Record1<my.project.model.jooq.enums.Color>>
,所以我想知道是否有一种方法可以立即将 Color 枚举提取到列表中,就像我对任何 pojo 所做的那样。
如何获取枚举值?
从 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 从 PostgreSQL enum
数据类型生成的,你不需要专门映射任何东西,jOOQ 会自动为你做:
List<my.project.jooq.enums.Color> colors =
dsl.selectDistinct(TABLE.T_COLOR)
.from(TABLE)
.fetch(TABLE.T_COLOR);