2014-11-26 6 views
1

Orika에 익숙하지 않은 나는 방망이를 즉시 받아 들일 것이며 여전히 작동 방식과 입/출력 방법을 배우고 있습니다. 그것의.응답 (래퍼) 객체 내의 DTO 목록에 엔티티 목록의 Orika 데이터 매핑

자신이 발견 한 상황은 주소 목록 (JSON REST Object)을 반환하는 EmberJS 웹 클라이언트가 호출하는 웹 서비스입니다. 내가 가진 문제는 반환해야하는 응답은 단순히 List가 들어있는 쉘/래퍼 객체입니다. DAO에서이 목록을 검색하고이를 응답 객체 내의 목록에 매핑해야합니다.

엔티티 목록을 dto 목록에 매핑하는 것은 쉽습니다. 내가 할 수있는 일. 하지만이 엔티티 목록을 응답 개체 또는이 응답 개체 내의 dto 목록에 매핑하는 방법을 파악할 수 없습니다.

나는 성공적으로 수행했습니다

MapperFactory mapperFactory = new DefaultMapperFactory.Builder().build(); 
mapperFactory.classMap(AddressVO.class, Address.class).byDefault().register(); 

MapperFacade mapper = mapperFactory.getMapperFacade(); 
List<Address> addressesRestDto = mapper.mapAsList(addressesVO, Address.class); 

response = new AddressesResponse(); 
response.setAddresses(addressesRestDto); 

return new ResponseEntity<AddressesResponse>(response, HttpStatus.OK); 

을하지만 어떻게 내가 AddressesResponse.addresses 속성으로 설정할 수 있습니다 목록에 목록을 매핑 할 mapperFactory에 지정할 수 있습니까? 내 자바 웹 서비스에서

{ 
    "addresses" : [{ 
      "id" : 1, 
      "type" : "WORK", 
      "street" : "6262 Sunset Drive", 
      "city" : "Miami", 
      "state" : "FL", 
      "zip" : "33143" 
     }, { 
      "id" : 2, 
      "type" : "HOME", 
      "street" : "101 Main Street", 
      "city" : "New York", 
      "state" : "NY", 
      "zip" : "10022" 
     } 
    ] 
} 

,이의 반환 값입니다 : 내가 있다고 생각

@RequestMapping(value = "/{id}/addresses", method = RequestMethod.GET) 
public ResponseEntity<AddressesResponse> retrieveContactAddresses(@PathVariable int id) 
{ 
    .... 
    List<AddressVO> addressesVO = contactDAO.retrieveAddresses(id); 
    .... 
} 
public class AddressesResponse 
    implements Serializable 
{ 

    private static final long serialVersionUID = -4734662942482137495L; 

    protected List<Address> addresses; 


    public List<Address> getAddresses() { 
     return addresses; 
    } 

    public void setAddresses(List<Address> addresses) { 
     this.addresses = addresses; 
    } 
} 


@JsonInclude(Include.NON_NULL) // Ensure that only not null values gets returned in the JSON document 
public class Address 
    extends UpdateableRestDto 
{ 

    private static final long serialVersionUID = 4332153509500388664L; 

    protected String type; 

    protected String street; 

    protected String city; 

    protected String state; 

    protected String zip; 


    public String getType() { 
     return type; 
    } 

    public void setType(String type) { 
     this.type = type; 
    } 

    public String getStreet() { 
     return street; 
    } 

    public void setStreet(String street) { 
     this.street = street; 
    } 

    public String getCity() { 
     return city; 
    } 

    public void setCity(String city) { 
     this.city = city; 
    } 

    public String getState() { 
     return state; 
    } 

    public void setState(String state) { 
     this.state = state; 
    } 

    public String getZip() { 
     return zip; 
    } 

    public void setZip(String zip) { 
     this.zip = zip; 
    } 

} 


public class AddressVO 
    extends UpdateableVO 
{ 

    private static final long serialVersionUID = -2536056035043485871L; 

    protected AddressTypeEnum type; 

    protected String street; 

    protected String city; 

    protected String state; 

    protected String zip; 


    public AddressTypeEnum getType() { 
     return type; 
    } 

    public void setType(AddressTypeEnum type) { 
     this.type = type; 
    } 

    public String getStreet() { 
     return street; 
    } 

    public void setStreet(String street) { 
     this.street = street; 
    } 

    public String getCity() { 
     return city; 
    } 

    public void setCity(String city) { 
     this.city = city; 
    } 

    public String getState() { 
     return state; 
    } 

    public void setState(String state) { 
     this.state = state; 
    } 

    public String getZip() { 
     return zip; 
    } 

    public void setZip(String zip) { 
     this.zip = zip; 
    } 

} 
+0

성공에 성공 했습니까? – miguelcobain

답변

0

내가 생각하는 필요가 없기 때문에 (Orika에서 자동으로 수행 할 작업 없음). 지금까지 해본 내용은 훌륭합니다.