Я использую Mapstruct для карты между моей сущностью и классами DTO. У меня есть вложенное свойство, которое я хочу отобразить, не явно определяя аннотацию @mapping для каждого вложенного имущества. Мне было интересно, есть ли способ настроить MapStruct, чтобы справиться с этим неявно по соглашению. Я мог бы найти соответствующую конфигурацию из документов. < /P>
Вот упрощенная версия моего кода: < /p>
@Mapper
public interface CompanyMapper {
CompanyMapper INSTANCE = Mappers.getMapper(CompanyMapper.class);
// I want to avoid defining this @Mapping annotation
// @Mapping(source = "country.name", target = "countryName") ► works but is to complicated for many properties in my opinion
//@Mapping(target = ".", source = "country") ► not working, performs a flat mapping not country*
CompanyDto toDto(Company company);
}
@Data
@Builder
class Company {
private String name;
private Country country;
}
@Data
@Builder
class Country {
private String name;
}
@Data
class CompanyDto {
private String name;
private String countryName;
}
@Test
void map() {
var country = Country.builder()
.name("France")
.build();
var company = Company.builder()
.country(country)
.name("Peugeot")
.build();
var companyDto = CompanyMapper.INSTANCE.toDto(company);
assertEquals("Peugeot", companyDto.getName());
assertEquals("France", companyDto.getCountryName());
}
Подробнее здесь: https://stackoverflow.com/questions/794 ... vention-to