Невозможно сгенерировать метод отображения без входных аргументов с Mapstruct - PullRequest
1 голос
/ 10 апреля 2019

Я начинаю свои самые первые шаги с Mapstruct mapper.Я хочу сопоставить класс сущности данных JPA классу DTO.Это мой исходный класс:

@Entity
@Data
@Table(name = "projects")
public class Project {
    @Id
    private Long Id;
    private String projectName;
    private String description;

    @OneToMany(mappedBy = "project")
    List<Sprint> sprints;

    @OneToMany(mappedBy = "project")
    List<Epic> epics;

    @OneToMany(mappedBy = "project")
    List<Story> stories;

    public Project(Long id, String projectName, String description) {
        Id = id;
        this.projectName = projectName;
        this.description = description;
    }
}

Это мой целевой класс:

@Data
@AllArgsConstructor
public class ProjectDTO {
    private Long Id;
    private String projectName;
    private String description;
}

Аннотация @Data от Lombok.Я хочу сделать картограф для сопоставления проекта с ProjectDTO, атрибуты, такие как спринты, эпопеи, истории НЕ ДОЛЖНЫ быть включены в ProjectDTO.Это мой интерфейс картографа:

@Mapper
public interface ProjectMapper extends Mapper {

    ProjectMapper INSTANCE = Mappers.getMapper(ProjectMapper.class)

    ProjectDTO projectToProjectDTO(Project project);
}

Когда я пытаюсь его построить, я получаю сообщение об ошибке:

[ОШИБКА] Невозможно сгенерировать метод сопоставления безвходные аргументы.

Я думаю, это связано с отсутствующими свойствами в ProjectDTO, но я не знаю, как их решить.С @Mapping я не могу сделать это так:

@Mapping(source=“sprints”, target= null)

Любая помощь будет признательна!

1 Ответ

1 голос
/ 10 апреля 2019

Добавьте также @NoArgConstructor.MapStruct не может (пока) заниматься созданием объектов с помощью конструктора.Другой вариант - использовать @Builder вместо вас, если ваши объекты действительно неизменны

...