У меня есть следующий Mapper
@Mapper
@Named("RoleBaseMapper")
public interface RoleBaseMapper {
@Mapping(target = "code", source = "name")
@Named("mapToBase")
RoleGuiBaseDto mapToBase(Role role);
@Named("MapListToBase")
List<RoleGuiBaseDto> mapListToBase(List<Role> roles);
}
Я ожидаю, что mapListToBase
будет использовать mapToBase
для сопоставления каждой записи в списке. Но когда я вижу сгенерированный код, у меня появляется следующее
@Override
public List<RoleGuiBaseDto> mapListToBase(List<Role> roles) {
if ( roles == null ) {
return null;
}
List<RoleGuiBaseDto> list = new ArrayList<RoleGuiBaseDto>( roles.size() );
for ( Role role : roles ) {
list.add( roleToRoleGuiBaseDto( role ) );
}
return list;
}
protected RoleGuiBaseDto roleToRoleGuiBaseDto(Role role) {
if ( role == null ) {
return null;
}
RoleGuiBaseDto roleGuiBaseDto = new RoleGuiBaseDto();
roleGuiBaseDto.setId( role.getId() );
roleGuiBaseDto.setDescription( role.getDescription() );
return roleGuiBaseDto;
}
Создается новый метод сопоставления, который используется вместо mapToBase
.
Как я могу сказать mapListToBase
использовать mapToBase
.
Примечание: все работает хорошо без @Named
.