Можно ли косвенно отобразить вложенные свойства в составе конвенции с плоским свойством?JAVA

Программисты JAVA общаются здесь
Anonymous
Можно ли косвенно отобразить вложенные свойства в составе конвенции с плоским свойством?

Сообщение Anonymous »

Я использую 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

Вернуться в «JAVA»