2

エンティティと DTO の間にマッパーがあります。

@Mapper(componentModel="cdi", uses = { RegionMapper.class })
public interface ClusterMapper {
    @Mapping(target="regions", ignore=true)
    ClusterDto map(Cluster entity);

    ClusterDto mapWithRegions(Cluster entity);
}

最初のマッピング関数は、エンティティを一覧表示するための「単純なマッピング」であり、2 番目のマッピング関数は詳細ビュー用です。リストに相当するものが欲しいので、注釈があります:

@Qualifier
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.SOURCE)
public @interface Simple {
}

そして、この修飾子を最初のマッピング関数と List 関数に追加します。

@Mapper(componentModel="cdi", uses={RegionMapper.class})
public interface ClusterMapper {
    @Simple // <====
    @Mapping(target="regions", ignore=true)     
    ClusterDto map(Cluster entity);

    ClusterDto mapWithRegions(Cluster entity);

    @IterableMapping(qualifiedBy = Simple.class) // <====
    List<ClusterDto> map(List<Cluster> entities);

}

しかし、@Simple注釈があっても、エラーメッセージが表示されます:

コレクション要素を次の場所にマッピングするためのあいまいなマッピング メソッドが見つかりました...

List map(List)関数に最初のマッピング関数を「選択」させるにはどうすればよいですか?

4

1 に答える 1

8

わかりました、間違いを犯しました: 私の@Simple注釈では、javax.inject.Qualifier代わりにをインポートしましたorg.mapstruct.Qualifier

于 2015-09-16T06:47:10.433 に答える