使用映射映射嵌套对象
问题描述:
我创建如下的映射。如何将平面dto对象属性(如街道,城市等)映射到域对象中的嵌套地址。当我尝试,我得到了一个错误:使用映射映射嵌套对象
[ERROR] diagnostic: Unknown property "address.postalCode" in return type. @Mapping(source = "city", target = "address.city"),
@Mapper(componentModel = "spring", uses = {})
public interface CompanyMapper {
@Mappings({
@Mapping(source = "id", target = "id"),
@Mapping(source = "street", target = "address.street"),
@Mapping(source = "city", target = "address.city"),
@Mapping(source = "postalCode", target = "address.postalCode"),
@Mapping(source = "province", target = "address.province"),
})
DomainObject map(DtoObject dto);
和类...
public class Address {
private String street;
private Integer streetNumber;
private String city;
private String postalCode;
private String province;
//getters and setters
}
public class DomainObject {
private String id;
private Address address;
//getters and setters
}
public class DtoObject {
private String id;
private String street;
private String city;
private String postalCode;
private String province;
//getters and setters
}
答
我找不到在一种方法中做到这一点的方法。这里是我的解决方案:
@Mapper
public interface DtoObjectMapper {
Address toAddress(DtoObject dtoObject);
DomainObject toDomainObject(DtoObject dtoObject, Address address);
}
while using;
@Component
public class SomeClass {
@Autowired
private DtoObjectMapper dtoObjectMapper;
public DomainObject convert(DtoObject dtoObject) {
return dtoObjectMapper.toDomainObject(dtoObject, dtoObjectMapper.toAddress(dtoObject));
}
}
那么有没有其他解决方案来解决这个问题? 我认为如果表达式在源代码中会起作用! – TinyOS
@Gunnar在目标端嵌套仍不支持?如果是的话,那么这个“目标侧嵌套”是由龙箱支持的吗? –