2016-11-21 204 views
2

在做select时,jOOQ可以更改字段数据类型吗?jOOQ选择字段数据类型

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

实施例:

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

我不能轻易更换表字段。我需要从表格字段中删除字段,然后进行新的选择(例子)。

回答

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(...) 

当然,你也可以分析出这个特定的数据类型更换在一个专门的功能。