Java 如何使用MapStruct在一个字段中应用列表?
我有一个POJO:Java 如何使用MapStruct在一个字段中应用列表?,java,mapping,mapstruct,Java,Mapping,Mapstruct,我有一个POJO: public class PlayerDto { private Long id; private String name; private String past; } 我有一个实体: public class Player { private Long id; private String name; private List<String> past; } 谢谢我想您需要在映射器界面中定义一个默认方
public class PlayerDto {
private Long id;
private String name;
private String past;
}
我有一个实体:
public class Player {
private Long id;
private String name;
private List<String> past;
}
谢谢我想您需要在映射器界面中定义一个默认方法来处理从
列表
到字符串
的数据转换。Mapstruct将自动使用默认方法
映射的默认方法签名应如下所示:
String map(List<String> past)
字符串映射(列出过去)
例如:
default String map(List<String> past) {
return past.stream().collect(Collectors.joining(","));
}
默认字符串映射(列出过去){
返回过去的.stream().collect(收集器.joining(“,”);
}
谢谢您的回答,但我在哪里可以使用它?在@Mapping
中,MapStruct
将自动检测默认方法并使用它。您不必声明它,只需将该方法放在映射器接口中即可。在生成的文件中,您应该看到如下内容playerDto.setPlayer(map(player.getPlayer())代码>我现在正在测试。我有一个错误idk为什么:无法将属性“java.lang.String pass”映射到“java.util.List pass”
哦,似乎错误不同。您正在尝试将String
映射到List
。如果是这种情况,则需要在映射器中定义默认方法列表映射(字符串过去)
。和。。如果源属性和目标属性相同(“过去”),则不必指定@映射(target=“pass”,source=“pass”)
default String map(List<String> past) {
return past.stream().collect(Collectors.joining(","));
}