生成的 mapstruct 实现中没有 setter 方法
no setter methods in generated mapstruct implementation
我正在试验 mapstruct 并遵循本教程:
我有这个实体:
@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。
我正在试验 mapstruct 并遵循本教程:
我有这个实体:
@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。