私はModelMapper
を使用して、DTO
オブジェクトのIdentity
オブジェクト(エンティティ)を変換しています。すべてのエンティティ(GenericEToDtoPropertyMap
)のジェネリッククラスの汎用プロパティ変換と各エンティティ(エンティティPerson
のPersonEToDTOPropertyMap
)の個別の子クラスの明示的なプロパティ変換を実装したいと思います。それをより明確にするために、これは私のコードです:ModelMapperのPropertyMapで継承を使用する方法
一般的なプロパティマップ:エンティティ者のための
public class GenericEToDtoPropertyMap<E extends Identity, DTO extends PersistentObjectDTO> extends PropertyMap<E, DTO> {
@Override
protected void configure() {
// E.oid to DTO.id conversion
map().setId(source.getOid());
}
}
特定のプロパティマップ:プロパティマップの
public class PersonEToDTOPropertyMap extends GenericEToDtoPropertyMap<Person, PersonDTO> {
@Override
protected void configure() {
super.configure();
// implement explicit conversions here
}
}
は使用方法:
modelMapper = new ModelMapper();
Configuration configuration = modelMapper.getConfiguration();
configuration.setMatchingStrategy(MatchingStrategies.STRICT);
modelMapper.addMappings(new PersonEToDTOPropertyMap());
// convert person object
PersonDTO personDto = modelMapper.map(person);
一般的な変換は適用されないという問題があります。私の場合、person.oid
はpersonDto.id
にコピーされません。 GenericEToDtoPropertyMap.configure()
方法から
map().setId(source.getOid());
とPersonEToDTOPropertyMap.configure()
方法でそれを置く:それは、私は一部を削除する場合にのみ正しく動作します。
ModelMapper
との関連があります。Reflection
を使用してマッピングを実装していますが、プロパティマップで継承を使用できればいいと思います。これをどうやって行うのか考えていますか?