私は、JPAエンティティからPOJO DTOへのマッピングにMapStructを使用しています。これは、依存性注入を伴うSpringアプリケーションです。Mapstructコレクションマッパーでデコレーションされたメソッドを使用する方法?
デコレータのメソッドas specified in the docにDTOの処理を追加しました。
1つのエンティティをマッピングするには問題ありません。しかし、私はまた、これらのエンティティのコレクション(セット)のマッピングを持っており、そのエンティティのコレクションが関係で見つかると自動的にこのメソッドが呼び出されます。
しかし、生成されたコレクションマッピングメソッドはデコレートされたメソッドを使用して各エンティティをマッピングせず、単にデリゲートで "vanilla"生成メソッドを使用します。ここで生成されたメソッドのコードされています
@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にコレクションマッピングのデコレータメソッドを使用させる方法はありますか?デコレータにコレクションメソッドを手動で書き込むのは手間がかかります(動作しますが、冗長でMapStructの最初の場所にある目的を奪います。この種のコードを書く必要はありません)?