Почему Map Struct иногда генерирует неправильный Mapper, и как я могу ее исправить?JAVA

Программисты JAVA общаются здесь
Anonymous
Почему Map Struct иногда генерирует неправильный Mapper, и как я могу ее исправить?

Сообщение Anonymous »

Я использую Java 8, Spring Boot 2.3.4. РЕЛИЗА ВЕРСИЯ, MAVEN в качестве инструмента сборки и IntelliJ в качестве моего IDE. Class = "Lang-Java PrettyPrint-Override">@Mapper(componentModel = "spring", nullValuePropertyMappingStrategy = NullValuePropertyMappingStrategy.IGNORE)
public interface MapStructVehicleMapper {
Vehicle toVehicle(VehicleMasterDto dto);
void updateVehicleFromDto(@MappingTarget Vehicle vehicle, VehicleDetailDto vehicleDetailDto);
}
< /code>
Приведено ниже зависимости, которые я использовал.

org.mapstruct
mapstruct
1.5.5.Final




org.mapstruct
mapstruct-processor
1.5.5.Final
provided


org.apache.maven.plugins
maven-compiler-plugin
3.11.0

${java.version}
${java.version}



org.mapstruct
mapstruct-processor
1.5.5.Final



org.projectlombok
lombok
1.18.30




< /code>
Проблема, с которой я сталкиваюсь, заключается в том, что когда IMP Mapstruct генерирует во время компиляции, иногда она генерирует правильную реализацию, но иногда это не так.@Generated(

value = "org.mapstruct.ap.MappingProcessor",
date = "2025-08-25T19:01:41+0530",
comments =
"version: 1.5.5.Final, compiler: javac, environment: Java 1.8.0_462 "
"(Private Build)"
)

@Component

public class MapStructVehicleMapperImpl implements MapStructVehicleMapper {
@Override
public Vehicle toVehicle(VehicleMasterDto dto) {
if (dto == null) {
return null;
}

Vehicle vehicle = new Vehicle();
vehicle.setVehicleNo(dto.getVehicleNo());
vehicle.setDriverMobileNo(dto.getDriverMobileNo());
vehicle.setDriverEmail(dto.getDriverEmail());
vehicle.setMaxWeight(dto.getMaxWeight());
vehicle.setMaxCapacity(dto.getMaxCapacity());

return vehicle;
}

@Override
public void updateVehicleFromDto(Vehicle vehicle, VehicleDetailDto vehicleDetailDto) {
if (vehicleDetailDto == null) {
return;
}

if (vehicleDetailDto.getDriverMobileNo() != null) {
vehicle.setDriverMobileNo(vehicleDetailDto.getDriverMobileNo());
}

if (vehicleDetailDto.getDriverEmail() != null) {
vehicle.setDriverEmail(vehicleDetailDto.getDriverEmail());
}

if (vehicleDetailDto.getMaxWeight() != null) {
vehicle.setMaxWeight(vehicleDetailDto.getMaxWeight());
}

vehicle.setMaxCapacity(vehicleDetailDto.getMaxCapacity());
}
}
< /code>
Иногда он генерирует следующий карт, который неверный: < /p>
@Generated(

value = "org.mapstruct.ap.MappingProcessor",

date = "2025-08-26T09:43:06+0530",

comments =
"version: 1.5.5.Final, compiler: javac, environment: Java 1.8.0_462 "
"(Private Build)"

)

@Component

public class VehicleMapperMapStructImpl implements VehicleMapperMapStruct {
@Override
public Vehicle toVehicle(VehicleMasterDto dto) {
if (dto == null) {
return null;
}

Vehicle vehicle = new Vehicle();

return vehicle;
}

@Override
public void updateVehicleFromDto(Vehicle vehicle, VehicleDetailDto vehicleDetailDto) {
if (vehicleDetailDto == null) {
return;
}
}
}
< /code>
Из -за этого случайного поведения я не могу доверять структуре карты в нашей производственной среде. Таким образом, мне пришлось создать ручную карту. Может ли кто -нибудь помочь мне понять основную проблему здесь?


Подробнее здесь: https://stackoverflow.com/questions/797 ... n-i-fix-it

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