現在公式ではサポートされておらず、自前で実装する必要があります。
以下2つを行うことで変換ができるようになります。
-
ValueReader
を自前で実装する -
ModelMapper
のConfiguration
に上記で実装したValueReader
を追加する
ValueReader
を自前で実装する
org.modelmapper.spi.ValueReader
というインターフェースが用意されているので、
Record
のフィールドが取得できるように実装します。
以下のソースコードをコピペすれば使えると思います。
やっていることはシンプルで引数の値に応じてリフレクションを使って値を引っこ抜くというコードを書いています。
ModelMapper
のConfiguration
に上記で実装したValueReader
を追加する
上記で実装したクラスをRecordValueReader
と名付けたとして、以下のように呼び出しを追加してあげます。
JavaConfig.java
@Bean
public ModelMapper modelMapper() {
ModelMapper mapper = new ModelMapper();
mapper.getConfiguration().addValueReader(new RecordValueReader());
return mapper;
}
これで、以下のように呼び出してあげればRecord -> POJO
への変換ができます。
Converted converted = modelMapper.map(record, Converted.class);
結論
ModelMapper
を使いたいなら、
現時点ではRecord
を使わずにPOJO
でやった方が楽ちん。