Это происходит потому, что метод, предоставленный для сопоставления поля taskStatus
, имеет тип возвращаемого значения TaskStatusEnum
, однако поле taskStatus
равно Long
как в источнике, так и в целевом.
Либо преобразовать тип целевого поля для перечисления следующим образом:
@Getter
@Setter
public class TaskResponse {
private TaskStatusEnum taskStatus;
}
Или удалите сопоставление для поля taskStatus
:
public abstract List<TaskResponse> toAllTaskListResponse(List<TaskList> taskList);
Кроме того, другой метод преобразования одиночного TaskList
в TaskResponse
потребуется для работы методов преобразования списка. Если требуется, там следует применить сопоставление для taskStatus
. Примерно так:
@Mapping(source= "taskStatus", target = "taskStatus", qualifiedByName= "taskStatusToString")
public abstract TaskResponse toTaskResponse(TaskList taskList);
public abstract List<TaskResponse> toAllTaskListResponse(List<TaskList> taskList);
@Named("taskStatusToString")
public static TaskStatusEnum taskStatusToString(long taskStatus) {
return TasStatusEnum.get(taskStatus);
}
Mapstruct, сначала реализует сопоставление между TaskList
и TaskResponse
, а затем, в свою очередь, List<TaskList>
с List<TaskResponse>