我想将映射EmployeeDto到EmployeeValue。考虑以下类别:
public class EmployeeDto {
private String telephoneNumber;
private Integer companyId;
public String getTelephoneNumber() {
return telephoneNumber;
}
public void setTelephoneNumber(String telephoneNumber) {
this.telephoneNumber = telephoneNumber;
}
public Integer getCompanyId() {
return companyId;
}
public void setCompanyId(Integer companyId) {
this.companyId = companyId;
}
}
public class EmployeeValue {
private String telephoneNumber;
private Company company;
public String getTelephoneNumber() {
return telephoneNumber;
}
public void setTelephoneNumber(String telephoneNumber) {
this.telephoneNumber = telephoneNumber;
}
public Company getCompany() {
return company;
}
public void setCompany(Company company) {
this.company = company;
}
}
public class Company {
private Integer id;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
}
我正在尝试使用mapstruct-mapper映射这些类:
@Mapper(componentModel = "cdi")
public interface EmployeeDto2EmployeeValueMapper {
@Mapping(source ="companyId", target = "company.id")
EmployeeValue map(EmployeeDto dto);
}
这运行得很好,因为此测试运行绿色:
class EmployeeDto2EmployeeValueMapperTest {
private static final String TELEPHONE_NUMBER = "telephoneNumber";
private static final int COMPANY_ID = 1;
private EmployeeDto2EmployeeValueMapper classUnderTest = Mappers.getMapper(EmployeeDto2EmployeeValueMapper.class);
@Test
void map() {
EmployeeDto employeeDto = new EmployeeDto();
employeeDto.setTelephoneNumber(TELEPHONE_NUMBER);
employeeDto.setCompanyId(COMPANY_ID);
EmployeeValue outcome = classUnderTest.map(employeeDto);
assertThat(outcome.getTelephoneNumber(), is(TELEPHONE_NUMBER));
assertThat(outcome.getCompany().getId(), is(COMPANY_ID));
}
}
现在,如果我添加unmappedSourcePolicy = ReportingPolicy.ERROR到映射器,那就是
@Mapper(componentModel = "cdi", unmappedSourcePolicy = ReportingPolicy.ERROR)
public interface EmployeeDto2EmployeeValueMapper {
@Mapping(source ="companyId", target = "company.id")
EmployeeValue map(EmployeeDto dto);
}
生成失败,并显示以下错误消息:未映射的源属性:“ telephoneNumber”。
在我看来,这似乎是一个错误,因为这些字段实际上已被映射(正如我的测试之前所证明的)。您对此有什么想法吗?
问题来源:Stack Overflow
关于mapstruct问题跟踪器,以下条目似乎涵盖了您的问题。
问题:unmappedSourcePolicy设置为ERROR导致嵌套Bean问题#1881
https://github.com/mapstruct/mapstruct/issues/1881
根据问题评论,修复程序将包含在即将发布的1.4.0中。但是,我找不到此版本何时发布。
回答来源:Stack Overflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。