#java #mapstruct
#java #mapstruct
Вопрос:
Я хочу определить на уровне класса mapper стратегию, в которой говорилось, что если значение перечисления не сопоставлено, сопоставить его с null.
Точно так же, как я бы написал на уровне метода:
@ValueMapping( source = MappingConstants.ANY_REMAINING, target = MappingConstants.NULL )
Чтобы она применялась ко всем вспомогательным методам сопоставления, автоматически генерируемым mapstruct, не заставляя меня объявлять их все, просто чтобы добавить эту строку.
Ответ №1:
Создайте сопоставитель ‘class’ для вашего перечисления, а затем используйте его в другом сопоставителе с uses
атрибутом @Mapper
аннотации.
Например :
public interface MyEnumMapper {
@ValueMapping( source = MappingConstants.ANY_REMAINING, target = MappingConstants.NULL )
public String asString(MyEnum myenum);
}
а затем использовать его
@Mapper(uses=MyEnumMapper.class)
public class CarMapper {
CarDto carToCarDto(Car car);
}
(предполагая, что Car
объект имеет атрибут типа MyEnum
)
смотрите полную документацию здесь:https://mapstruct.org/documentation/stable/reference/html/#invoking-other-mappers
Комментарии:
1. Спасибо, но я ищу способ не объявлять метод для каждого перечисления, просто чтобы сказать, чтобы сопоставить значение null, если не найдено. Ваш ответ просто заставляет меня перенести объявление в подкласс.