jOOQ映射器从POJO到记录

问题描述:

使用jOOQ 3.8.6,我必须实现record mapper才能将记录转换为Pojo,因为某些UDT在提取的记录中。 现在,我想知道如何从Pojo创建记录时做相反的事情。jOOQ映射器从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录制一个自定义的转换器。 有谁知道如何?

您正在寻找的RecordUnmapper feature (issue #2520),这尚未实施为jOOQ 3.8

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

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