2016-11-21 12 views
2

selectを実行するときにjOOQでフィールドのデータ型を変更することはできますか?jOOQ selectフィールドのデータ型

たとえば、私はjOOQで生成されたソースがあり、フィールドXがあり、そのデータ型を変更したいとします。私はコンバータを追加しようとしています。

例:

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

私は簡単にテーブルのフィールドを置き換えることはできません。私はテーブルのフィールドからフィールドを削除し、新しい選択(例)を行う必要があります。

答えて

0

特定のSELECTクエリのフィールドを新しいデータ型に変更する最も簡単な方法は、Field.coerce(DataType)です。あなたはPERSONテーブル内の他のすべてのフィールドを保持する場合は、あなたがこのように進めることができ

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

:たとえばもちろん

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

、あなたは、この特定のデータ型の交換をもくくり出すことができ専用の機能で