0

Mapstruct は、属性のジェネリック型を見つけることができません。私がやろうとしていることを明確にするために例を挙げましょう。

次の dtos を考慮します。

class ListForm<T> {
 private Collection<T> adds;
 private Collection<T> changes;
 private Collection<T> deletes;
}

class Person {
 private String name;
}

class PersonDto { 
 private String name;
}

次のマッパーを実装しようとしています。

@Mapper
public interface OccupantMapper {
    ListForm<Person> test(ListForm<PersonDto> person);

    Collection<Person> toPersons (Collection<PersonDto> persons);
}

しかし、これは mapstruct が生成するものの一部です:

ListForm<Person> listForm= new ListForm<Person>();
if ( occ.getAjouts() != null ) {
        if ( listForm.getAjouts() != null ) {
            // problem here, mapstruct can't find the type of the attribute
            Collection<T> targetCollection = person.getAdds();
            if ( targetCollection != null ) {
                listForm.getAjouts().addAll( targetCollection );
            }
        }
    }

以下のコードでわかるように、mapstruct はターゲット コレクションの型を見つけることができません。また、PersonDto のリストを Person のリストに変換しません。mapstruct が生成するものは次のとおりです。

Collection<Occupant> targetCollection = toPersons(person.getAdds());

バグかどうか教えていただけますか?修正があれば?それとも、別の方法で行う必要がありますか?ありがとう、

4

2 に答える 2