jOOQ选择字段数据类型

时间:2016-11-21 12:25:45

标签: java select converter jooq

在执行select时,是否可以在jOOQ中更改字段数据类型?

例如,我有jOOQ生成的源,并且有字段X,我想更改它的数据类型。我正在尝试添加转换器。

示例:

select(PERSON.field(PERSON.ADDRESS.getName(), addressConverter.getDataType()));

我无法轻易替换表字段。我需要从表字段中删除字段,然后进行新的选择(示例)。

1 个答案:

答案 0 :(得分:0)

“更改”字段以获得特定SELECT查询的新数据类型的最简单方法是使用Field.coerce(DataType)。例如:

select(PERSON.ADDRESS.coerce(addressConverter.getDataType()))
.from(...)

如果要保留PERSON表中的所有其他字段,可以按以下步骤操作:

select(Stream.of(PERSON.fields()).map(
     f -> f == PERSON.ADDRESS 
        ? f.coerce(addressConverter.getDataType())
        : f).toArray(Field[]::new))
.from(...)

当然,您也可以在专用函数中分解这种特定的数据类型替换。