从 POJO 到 Record 的 jOOQ 映射器

mat*_*boy 5 java jooq

使用 jOOQ 3.8.6,由于获取的记录中存在一些 UDT ,我不得不实现记录映射器以从 Record 转换为 Pojo。现在,我想知道从 Pojo 创建 Record 时如何做相反的事情。

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

我有一个

org.jooq.exception.MappingException: An error ocurred when mapping record from class tables.pojos.MyTable
Run Code Online (Sandbox Code Playgroud)

因为一个

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

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

Luk*_*der 2

您正在寻找该RecordUnmapper功能(问题#2520),该功能截至 jOOQ 3.8 尚未实现

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

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