2017-11-22 4 views
0

私はmapStructのドキュメントでいくつかの研究を行いましたが、これを達成するために何ができるかを見つけたり、理解したりしませんでした:フラットDTOオブジェクトへのインターフェイスを含むエンティティの会話。MapStructでインターフェースを変換するには?

ここでは属性を持つエンティティ:ここ

public class Group { 
    ... 

    private IUser user; 

    ... 
} 

DTO:

public GroupDTO { 

    private Long idUser; 

    private String username; 
} 

私たちは、このマッピングを試してください:古典的なマッピングで

@Mappings({ 
     @Mapping(source = "user.id", target = "idUser"), 
     @Mapping(source = "user.name", target = "username")}) 
GroupDTO toDTO(Group entity); 

、mapStructでエラーが発生(IUserは抽象であり、インスタンス化できません)。

ありがとうございます。それを行うには

+0

マニュアルマッピングを行うために@aftermappingを使用する必要がありますか? – MychaL

答えて

0

わからないその最善の方法...

しかし、我々はデフォルトの方法で手動でインターフェイス上で実装するオブジェクトを作成するために使用さ@AfterMapping。

逆動作のために@InheritInverseConfigurationを削除する必要がありました。

0

それはobject factory methodで動作します:

public IUser createIUser() { 
    return new User(); 
} 

IUserのインスタンスが必要な場合は、このファクトリメソッドが呼び出されます。

関連する問題