当前位置: 首页 > 知识库问答 >
问题:

jOOQ,并在enum对象中选择一个enum字段

东方宜
2023-03-14

我使用jOOQ和Postgreql从表中选择枚举值。

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()将返回结果

如何获取枚举值?


共有1个答案

宗安宁
2023-03-14

从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);
 类似资料:
  • 问题内容: 我在开关情况下使用枚举,但出现以下错误: NEWS FEED在FragmentName中不是常量 这是我的枚举字符串常量, 当我打电话 即使在传递的值相同的情况下,它也会在changeTitle函数中创建异常,因此,如果我已尽力解决此问题,将对您有所帮助。 问题答案: 将此代码添加到您的枚举 现在代替使用

  • 我想在SQL中执行以下操作: 在jOOQ中,我将subQ存储到Select中 我的问题是,如何从subQ中获取maxCol列,并在join中使用它?我的连接是这样的: 我在()上出错 类型字段中的方法eq(字符串)不适用于参数(字段) 我该怎么办?

  • 我正在尝试JOOQ,并试图使用连接语句从3个表(作者,书籍和文章)中进行选择。ERD如下: 我的问题如下: 我也有一个原型对象如下: (或任何其他pojo)将所有实体(作者详细信息图书列表文章列表)保存到一个对象中。我的问题是,是否有某种方法可以使用JOOQ将所有三个表映射到一个对象中。 提前谢谢。

  • 描述:描述一个相关属性的集合。 Syntax(语法) @enum [<type>] Overview(概述) @enum标签描述一个静态属性值的全部相同的集合。枚举类似一个属性的集合,除了枚举自己的描述注释之外,属性都记录在容器内部的注释中。通常这种标签是与@ReadOnly结合使用,作为一个枚举通常表示常量的集合。 Examples(例子) 这个例子表明如何记录一个对象,这个对象有三个可能的状态

  • Enums represent a possible set of values for a field. For example, the Issue object has a field called state. The state of an issue may be OPEN or CLOSED. For more information, see the GraphQL spec.

  • 问题内容: 有一个字段’noticeBy’枚举(’email’,’mobile’,’all’,’auto’,’nothing’)NOT NULL默认’auto’。众所周知,按ENUM字段排序相对于其索引执行。但是,如何通过其值进行排序? 问题答案: 如“ 排序”中所述: 值根据其索引号排序,索引号取决于列规范中列出的枚举成员的顺序。例如,在for 之前排序。空字符串排在非空字符串之前,值排在所有其