0

嗨,我在 Jhipster 中有一个带有 DTO mapstruct 的模型,但我无法正确映射这些关系

Person
   -String name
   -...
   Address address

Adress
    -String street
    -String zipCode

生成器创建没有关系的 DTO

PersonDTO
   -String name
   -...
   (lack of relation adress)

然后我修改了我的 PersonDTO 以包含这样的地址:

PersonDTO
   -String name
   -...
   **-Address address;**

编译应用程序时出现以下错误:

  error: Can't map property "com.kalitron.cxc.web.rest.dto.AddressDTO address"
 to "com.kalitro
    n.cxc.domain.Address address". 
Consider to declare/implement a mapping method: "
com.kalitron.cxc.domain.Address map(com.kalitron.cxc.web.rest.dto.AddressDTO value)".
        Person personDTOToPerson(PersonDTO personDTO);
                ^

但我不知道如何更正 PersonMapper 界面中的配置。

提前致谢!

4

2 回答 2

1

MapStruct 不知道如何将PersonDto类型的属性“地址”映射AddressDtoAddress要设置到结果中的Person. 正如错误消息所说,声明一个方法

Address addressDtoToAddress(AddressDTO addressDto)

在您的映射器上,通过@Mapping等应用它可能需要的任何配置。然后,生成的personDTOToPerson()实现将调用此方法来映射“地址”属性。

于 2015-07-11T06:18:24.950 回答
0

就像 Gunnar 说的,你必须声明一个方法,如果你想使用 AddressMapper,你可以注入它:

@Inject
AddressMapper addressMapper;

并在方法中使用它:

Address addressDtoToAddress(AddressDTO addressDto) {
    addressMapper.addressDTOtoAddress(addressDTO);
}
于 2015-09-11T07:34:05.247 回答