2017-04-06 1 views
0

나는 유일한 속성으로 컬렉션이있는 CXF 생성 클래스가 있습니다. 내 DTO의 단일 값을 해당 컬렉션의 요소로 매핑해야합니다.List 속성의 첫 번째 요소에 String 속성을 매핑하는 방법 <String> 속성?

class DTO { 
    String dto; 
} 

class A { 
    String a; 
} 

class B { 
    List<A> b; 
} 

interface Mapper { 
    @Mappings({ 
     @Mapping(source="dto", target="b.a") 
    }) 
    B getBfromDTO(DTO dto); 
} 

실제로 작동해야합니까? 그렇다면 어떻게이 매핑을 구성 할 수 있습니까?

+0

가능한 복제 (http://stackoverflow.com/questions/37143179/mapstruct-string-to-list-mapping) – Wolfie

답변

0

매핑으로이 작업을 수행하는 방법을 찾을 수 없으며 @Gunnar의 다른 대답에서이 작업을 수행 할 수 없다는 것을 이해했습니다. 그러나 주석을 사용하여 해결 방법을 찾았습니다 @AfterMapping.

@AfterMapping 매핑이 실행 된 후에 실행할 메서드를 지정할 수 있도록 내 개체의 비 모음 속성에 대한 매핑을 만들고 개체에 채우기를 채우는 데 @AfterMapping 매핑을 만들었습니다.

class DTO { 
    String a; 
    String x; 
} 

class A { 
    String a; 
} 

class B { 
    String x; 
    List<A> b; 
} 

abstract class Mapper { 
    @Mappings({ 
     @Mapping(source="x", target="x") 
    }) 
    protected abstract B getBfromDTO(DTO dto); 

    @AfterMapping 
    protected void fillCollections(DTO dto, @MappingTarget B b) { 
     b.getB().add(dto.a); 
    } 
} 
[매핑을 나열하는 MapStruct 문자열]의