ПРИМЕЧАНИЕ. Это не похоже на другие вопросы в StackOverflow, поскольку они решают эту проблему путем сопоставления двух классов вручную.Поскольку ScheduleSource и ScheduleTarget - это абсолютно одинаковые классы, я хочу, чтобы они отображались автоматически.
Привет,
У меня есть 2 класса ScheduleSource и ScheduleTarget.Они имеют точно такие же свойства.
Когда я пытаюсь использовать MapStruct для сопоставления ScheduleSource с ScheduleTarget, я получаю сообщение об ошибке:
Can't map property "java.util.Optional<java.time.LocalDate> startDate" to "java.time.LocalDate startDate". Consider to declare/implement a mapping method: "java.time.LocalDate map(java.util.Optional<java.time.LocalDate> value)
Я прикрепил два файла.Не могли бы вы помочь?
Файлы:
package testStructMap;
import org.mapstruct.*;
import org.mapstruct.factory.*;
@Mapper
public interface ScheduleMapper {
ScheduleMapper INSTANCE = Mappers.getMapper( ScheduleMapper.class );
ScheduleTarget scheduleSourceToScheduleTarget(ScheduleSource scheduleSource);
}
- ScheduleSource.java, ScheduleTarget.Java - та же структура
package testStructMap;
import java.time.LocalDate;
import java.time.LocalTime;
import java.util.Optional;
import javax.validation.constraints.*;
public class ScheduleSource {
@FutureOrPresent
@NotNull
private LocalDate startDate;
@NotBlank
private String repeatType;
@Positive
private Integer occurrences;
public Optional<LocalDate> getStartDate() {
return Optional.ofNullable(startDate);
}
public void setStartDate(LocalDate startDate) {
this.startDate = startDate;
}
public String getRepeatType() {
return repeatType;
}
public void setRepeatType(String repeatType) {
this.repeatType = repeatType;
}
public Optional<Integer> getOccurrences() {
return Optional.ofNullable(occurrences);
}
public void setOccurrences(Integer occurrences) {
this.occurrences = occurrences;
}
}