Java 如何使用MapStruct在一个字段中应用列表?

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; } 谢谢我想您需要在映射器界面中定义一个默认方

我有一个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;

}

谢谢

我想您需要在映射器界面中定义一个默认方法来处理从
列表
字符串
的数据转换。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(","));
}