【问题标题】:jOOQ mapper from POJO to Record从 POJO 到 Record 的 jOOQ 映射器
【发布时间】:2017-04-20 07:44:41
【问题描述】:

使用 jOOQ 3.8.6,我必须实现 record mapper 才能从 Record 转换为 Pojo,因为获取的记录中有一些 UDT。 现在,我想知道在从 Pojo 创建记录时如何做相反的事情。

public void update(MyTable pojo){ 
  MyTableRecord record = dsl.newRecord(tables.MyTable.MY_TABLE, pojo);
  record.store();
}

我有一个

org.jooq.exception.MappingException: An error ocurred when mapping record from class tables.pojos.MyTable

因为一个

Caused by: org.jooq.exception.DataTypeException: Cannot convert from MyType (class udt.pojos.MyType) to class udt.records.MyTypeRecord

我想我必须注册一个从 POJO 到 Record 的自定义转换器。 有人知道怎么做吗?

【问题讨论】:

    标签: java jooq


    【解决方案1】:

    您正在寻找 RecordUnmapper feature (issue #2520),截至 jOOQ 3.8 尚未实现

    您至少有以下两种可能的解决方法:

    1. 不要使用RecordMapper,而是使用Converter 或数据类型Binding。这些将允许您以两种方式实现转换,它不仅适用于您的 POJO,还适用于您的记录
    2. 在调用 DSLContext.newRecord(Table, Object) 之前执行手动“取消映射”步骤

    【讨论】:

      【解决方案2】:

      最终选择了 Google。从 jOOQ 3.13 开始,来自 OP 的语句运行良好。

      【讨论】:

        【解决方案3】:

        您可以使用ModelMapper 将 POJO 转换为 Record。例如:

         ModelMapper modelMapper = new ModelMapper();
         WorkerRecord workerRecord = modelMapper.map(worker, WorkerRecord.class);
        

        【讨论】:

          猜你喜欢
          • 2019-12-30
          • 2020-12-26
          • 2021-08-18
          • 1970-01-01
          • 2020-06-11
          • 2020-07-10
          • 2017-05-26
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多