java mapstruct将方法应用于列表中的所有对象
我的问题是:我想使用mapstruct
将类型为PersonB
的类映射到PersonA
,并修剪在List<Address> addresses
中找到的所有字符串
public class PersonA {
List<Address> addresses;
}
public class PersonB {
List<Address> addresses;
}
public Address {
String name;
}
@Mapper
public interface PersonMapper {
@Mapping(target = "addresses.name", qualifiedByName = "trim")
public PersonA mapToPersonA(final PersonB person);
@Named("trim")
public static String trim(final String value) {
return value != null ? value.trim() : null;
}
}
我的结构有点复杂,但我试着总结一下。我不知道为什么这个映射程序没有按预期工作,为什么字符串没有被修剪
# 1 楼答案
目前,MapStruct不允许为集合定义嵌套目标映射
除此之外,您的
PersonA
和PersonB
对于Address
具有相同的类型。这意味着MapStruct不会创建对象的副本,而是通过引用来复制它要解决第一个问题,需要定义一个显式方法来映射
Address
例如
这也将解决第二个问题,因为MapStruct将使用一个特定的方法来映射地址