私には2つのエンティティがあります。
エンティティ1:
public class Master {
private int id;
private Set<SubMaster> subMasters= new HashSet<SubMaster>(0);
}
public class SubMaster{
private int subId;
private String subName;
}
エンティティ2:
public class MasterDTO {
private int id;
private Set<SubMaster> subMasters= new HashSet<SubMaster>(0);
}
public class SubMasterDTO{
private int subId;
private String subName;
}
私はMapStruct Mapperを使用してPOJOの値を別の値にマップしています。
public interface MasterMapper{
MasterDTO toDto(Master entity);
}
Master
をMasterDTO
に正常にマップできます。ただし、SubMaster
内のMaster
のネストされたコレクションは、MasterDTO
内の対応するものにマップされません。
誰かが正しい方向に私を助けてくれませんか?
この例 MapstructのGithubリポジトリの=は、あなたがやろうとしていることの正確なショーケースです。
TL; DR SubMaster
(SubMasterMapper
と呼びましょう)クラスには別のマッパーが必要で、MasterMapper
に@Mapper(uses = { SubMasterMapper.class })
アノテーションを付けます。 :
public interface SubMasterMapper {
SubMasterDTO toDto(SubMaster entity);
}
@Mapper(uses = { SubMasterMapper.class })
public interface MasterMapper {
MasterDTO toDto(Master entity);
}