Орика данных сопоставление списка сущности со списком DTO в объекте ответа (оболочки)

1

Я соглашусь с места в карьер, что я новичок в Orika, и я все еще изучаю, как это работает, и в/из него.

Ситуация, в которой я нахожусь, - это веб-сервис, вызываемый веб-клиентом EmberJS, который возвращает список адресов (объект JSON REST). Проблема, я имею в том, что ответ, который я должен вернуть, - это немного объекта оболочки/оболочки, который просто содержит список. Я извлекаю этот список из 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);

Но как я могу указать mapperFactory, что я хочу отобразить список в список, который должен быть установлен в свойство AddressesResponse.addresses?

{
    "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"
        }
    ]
}

В моей веб-службе Java это возвращаемое значение:

@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
    У вас был успех в достижении этого?
Теги:
dto
orika
datamapper

1 ответ

0

Я думаю, что нет никакой возможности сделать это автоматически в Орике (потому что нет нужды, я думаю). То, что вы сделали до сих пор, прекрасно

Ещё вопросы

Сообщество Overcoder
Наверх
Меню