Mapstrtuct:嵌套对象。仅当源元素不为空时才创建目标对象
我想映射嵌套的java对象。 Customer.address.houseNumber
至userDTO.homeDTO.addressDTO.houseNo
。Mapstrtuct:嵌套对象。仅当源元素不为空时才创建目标对象
后市展望:当且仅当Customer.address.houseNumber
不为空,然后创建userDTO
下homeDTO
对象。否则,不要创建任何目标对象。
问题:我在映射程序中使用了"NullValueCheckStrategy.ALWAYS"
。但地图结构正在检查address
是否为空,则会创建homeDTO
。在address
内部,houseNumber
为NULL。我想空检查直到houseNumber
(叶/最后一级对象),然后创建目标对象。
请告知我应该如何实现这一
这里是我使用的映射。
@Mapper(nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS)
public interface Customer2UserMapper {
@Mapping(source="address.houseNumber", target="homeDTO.addressDTO.houseNo")
void mapCustomerHouse(Customer customer, @MappingTarget UserDTO userDTO) ;
}
这是如在mapstruct/mapstruct#879类似的东西。目前你正在寻找的是不可能的。
这样做将是一个方法确实有@AfterMapping
方法,将其设置回null
如果address.houseNumber
是null
谢谢菲利普。但@AfterMapping将会是额外的代码来检查src是否为空,然后将target设置为null。我有1000个要映射的元素,对于每个元素我都无法做这个检查。 –
我知道它会提取代码,但目前这是解决您的问题的唯一方法。这就是为什么我把你和这个问题联系起来,你可以在那里发表评论和赞扬。 – Filip
有在代码中的一些错别字(错误),您连接,例如'customer.getAddress()=。getHouseNumber()' –
谢谢Andrii。更正它。 –