依存性注入を使用する Spring アプリで、MapStruct を使用して JPA エンティティから POJO DTO にマップしています。
ドキュメントで指定されているように、デコレータのメソッドに DTO の追加処理を追加しました。
単一のエンティティのマッピングには問題なく機能します。しかし、これらのエンティティのコレクション (セット) のマッピングもあり、これらのエンティティのコレクションがリレーションシップで見つかると、メソッドが自動的に呼び出されます。
ただし、生成されたコレクション マッピング メソッドは、装飾されたメソッドを使用して各エンティティをマップするのではなく、デリゲートで「バニラ」生成メソッドを使用するだけです。生成されたメソッドのコードは次のとおりです。
@Override
public Set<DimensionItemTreeDTO> missionSetToTreeDtoSet(Set<Mission> set) {
return delegate.missionSetToTreeDtoSet( set );
}
デリゲート メソッド自体はデコレータを認識せず、個別のアイテム マッピング メソッドを呼び出します。
@Override
public Set<DimensionItemTreeDTO> missionSetToTreeDtoSet(Set<Mission> set) {
if ( set == null ) {
return null;
}
Set<DimensionItemTreeDTO> set__ = new HashSet<DimensionItemTreeDTO>();
for ( Mission mission : set ) {
set__.add( missionToTreeDto( mission ) ); //here the decorator is not called !
}
return set__;
}
...そして、コレクション内のアイテムに対して装飾されたメソッドが呼び出されることはありません。
Mapstruct にコレクション マッピングでデコレータ メソッドを使用させる方法はありますか? デコレータでコレクション メソッドを手動で記述する以外に方法はありますか?この種のコードを書く)?