从POJO到Record的jOOQ映射器

时间:2016-12-05 19:59:15

标签: java jooq

使用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。 有谁知道怎么做?

3 个答案:

答案 0 :(得分:1)

你正在寻找从{jOOQ 3.8开始尚未实施的RecordUnmapper feature (issue #2520)

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

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

答案 1 :(得分:0)

以Google结束。从jOOQ 3.13开始,OP的语句运行良好。

答案 2 :(得分:0)

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

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