生成的 mapstruct 实现中没有 setter 方法

no setter methods in generated mapstruct implementation

我正在试验 mapstruct 并遵循本教程:

mapstruct tut

我有这个实体:

@Entity
public class Company {
    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "seq_company")
    @SequenceGenerator(name = "seq_company", allocationSize = 1)
    @Column(nullable = false, updatable = false)
    private Long id;
    private String name;
    private String shortName;

    public Company() {
    }

    public Company(Long id, String name, String shortName) {
        this.id = id;
        this.name = name;
        this.shortName = shortName;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getShortName() {
        return shortName;
    }

    public void setShortName(String shortName) {
        this.shortName = shortName;
    }
}

这是简单的 dto:

public class CompanyDto {
    @JsonProperty("id")
    private Long id;
    @JsonProperty("name")
    private String name;
    @JsonProperty("shortName")
    private String shortName;
}

这是映射器界面:

@Mapper(componentModel = "spring")
public interface CompanyMapper {
    CompanyDto companyToCompanyDto(Company company);
    Company companyDtoToCompany(CompanyDto companyDto);
    List<CompanyDto> companiesToCompanyDtos(List<Company> companies);
}

我确实监督了一些事情,因为在生成的实现中没有 setter,f。即:

@Override
    public Company companyDtoToCompany(CompanyDto companyDto) {
        if ( companyDto == null ) {
            return null;
        }

        Company company = new Company();

        return company;
    }

哪里出了问题?

我注意到您的 CompanyDto class 有私有字段但没有 getter 或 setter。没有标准的方法来访问 class 中的字段。您可能需要添加这些以便映射进或映射出 class。