【发布时间】:2020-10-12 19:07:52
【问题描述】:
我需要将多个 dto 映射到实体。 几乎所有这些都有对另一个的引用,我不知道如何在映射 dto 时传递引用。
这是地址的一种业务实现:
addressRepository.saveAll(dtos.stream()
.map(addressMapper::asEntity)
.collect(Collectors.toList())).stream()
.map(addressMapper::asDto)
.collect(Collectors.toList());
这是映射器
@Mappings({
@Mapping(target="streetName", source="streetName"),
@Mapping(target="streetNumber", source="streetNumber"),
@Mapping(target="block", source="block"),
@Mapping(target="floor", source="floor")
})
CsvBusinessData asDto(AddressEntity address);
@InheritInverseConfiguration
AddressEntity asAddressEntity(CsvBusinessData address);
所有实现者都从同一个 dto 读取,然后将它们映射到 dto 和实体。
这是为客户实现的:
customerRepository.saveAll(dtos.stream()
.map( csvMapper::asCustomerEntity)
.collect(Collectors.toList())).stream()
.map(customerMapper::asDto)
.collect(Collectors.toList());
以及我想要引用映射地址实体的映射(我的客户实体有一个地址类型字段)。
@Mappings({
@Mapping(target = "nom", source = "lastName"),
@Mapping(target = "nd", source = "accountNumber"),
@Mapping(target = "logo", source = "logo"),
@Mapping(target = "address", source = "address"
)
})
CsvBusinessData asDto(CustomerEntity customer);
@InheritInverseConfiguration
CustomerEntity asCustomerEntity(CsvBusinessData customer);
非常感谢。
【问题讨论】:
-
请提供 CustomerEntity、CsvBusinessData 和 AddressEntity 类,让您的问题更清晰
标签: java spring-boot mapstruct