скрыть несопоставленные свойства в mapstruct - PullRequest
0 голосов
/ 26 февраля 2019

Я использую объект DTO для получения информации из моего @RequestBody в контроллере spring rest и использую тот же объект DTO в ответе json.Я хочу полностью скрыть некоторые поля из ответа.

Я пробовал @BeanMapping(ignoreByDefault = true), который возвращает ноль для несопоставленных свойств, но мой вопрос:

Есть ли способ полностью скрыть несопоставленные свойства на основена разных методах отображения

Пример

public Class Order {
private Long id;
private String name;
private String otherField;
}

public Class OrderDto {
private Long id;
private String name;
private String otherFieldA
private String otherFieldB;
}

@Mapper
public interface OrderMapper

//..

@Mappings({
  @Mapping(target = "id", source ="id"),
  @Mapping(target = "name", source ="name"),
  @Mapping(target = "otherFieldA", source ="otherField")
  })
@BeanMapping(ignoreByDefault = true)
OrderDto fieldAOnlyOrderToOrderDtoMapper(Order order);


@Mappings({
  @Mapping(target = "id", source ="id"),
  @Mapping(target = "name", source ="name"),
  @Mapping(target = "otherFieldB", source ="otherField")
  })
@BeanMapping(ignoreByDefault = true)
OrderDto fieldBOnlyOrderToOrderDtoMapper(Order order);

}
  1. , таким образом, результат вызова первого преобразователя [

fieldAOnlyOrderToOrderDtoMapper

вернет OrderDto объект, у которого нет свойства с именем (otherFieldB)

и вызов второго преобразователя

fieldBOnlyOrderToOrderDtoMapper

вернет объект OrderDto , которыйне имеет названного поля (otherFiledA)

1 Ответ

0 голосов
/ 02 марта 2019

IIUC вы хотите игнорировать определенные поля .. Это сделано так:

@Mapper
public interface OrderMapper

//..

@Mapping(target = "otherFieldA", source ="otherField")
@Mapping(target = "otherFieldB", ignore=true")
OrderDto fieldAOnlyOrderToOrderDtoMapper(Order order);


@Mapping(target = "otherFieldA", ignore=true)
@Mapping(target = "otherFieldB", source ="otherField")
OrderDto fieldBOnlyOrderToOrderDtoMapper(Order order);

}
...