2017-01-13 56 views
1

私はModelMapperを使用して、DTOオブジェクトのIdentityオブジェクト(エンティティ)を変換しています。すべてのエンティティ(GenericEToDtoPropertyMap)のジェネリッククラスの汎用プロパティ変換と各エンティティ(エンティティPersonPersonEToDTOPropertyMap)の個別の子クラスの明示的なプロパティ変換を実装したいと思います。それをより明確にするために、これは私のコードです: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.oidpersonDto.idにコピーされません。 GenericEToDtoPropertyMap.configure()方法から

map().setId(source.getOid()); 

PersonEToDTOPropertyMap.configure()方法でそれを置く:それは、私は一部を削除する場合にのみ正しく動作します。

ModelMapperとの関連があります。Reflectionを使用してマッピングを実装していますが、プロパティマップで継承を使用できればいいと思います。これをどうやって行うのか考えていますか?

答えて

0

私はちょうどModelMapperの作成者から答えを見つけ、ジョナサンHaltermanhttps://groups.google.com/forum/#!topic/modelmapper/cvLTfqnHhqQ

マッピングの継承のこの種のは現在のところ不可能です。

は、だから、私は子供のクラス内のすべての変換を実装する必要が推測

関連する問題