Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java MapStruct集合映射_Java_Mapstruct - Fatal编程技术网

Java MapStruct集合映射

Java MapStruct集合映射,java,mapstruct,Java,Mapstruct,我有这样一个映射: @Mappings({ @Mapping(target = "....", source = "..."), @Mapping(target = "....", source = "..."), @Mapping(target = "server", source = "server") // Added for clarity }) MyDTOClass mapMyEntity(MyEntityClass myEntityClass, Server

我有这样一个映射:

@Mappings({ 
    @Mapping(target = "....", source = "..."),
    @Mapping(target = "....", source = "..."),
    @Mapping(target = "server", source = "server") // Added for clarity
})
MyDTOClass mapMyEntity(MyEntityClass myEntityClass, Server server);
List<MyDTOClass> mapMyEntity(List<MyEntityClass> myEntityClass, Server server);
@映射({
@映射(target=“…”,source=“…”,
@映射(target=“…”,source=“…”,
@映射(target=“server”,source=“server”)//为清晰起见添加
})
MyDTOClass mapMyEntity(MyEntityClass MyEntityClass,服务器);
List mapMyEntity(List myEntityClass,服务器);
当我从数据库中检索数据时,我会得到一个实体列表。我需要将同一个服务器对象实例映射到列表中的所有DTO实例

MapStruct需要一个
列表
,这在本用例中有点多余

这是我想要的伪代码:

Server server = ....;
List<MyDTOClass> myDTOClassList = new ArrayList<MyDTOClass>();
for(MyEntityClass myEntityClass:List<MyEntityClass>)
{
    MyDTOClass myDTOClass = new myDTOClass();
    //My standard mappings
    myDTOClass.setXXX(myEntityClass.getXXX());
    ...
    ...
    //My special mapping applicable for all objects in list
    myDTOClass.setServer(server);
    myDTOClassList.add(myDTOClass);
}
Server=。。。。;
List myDTOClassList=新建ArrayList();
用于(MyEntityClass MyEntityClass:List)
{
MyDTOClass MyDTOClass=新的MyDTOClass();
//我的标准映射
myDTOClass.setXXX(myEntityClass.getXXX());
...
...
//我的特殊映射适用于列表中的所有对象
myDTOClass.setServer(服务器);
添加(myDTOClass);
}

如何实现这一点?

您可以使用
1.2
中的新版本来实现这一点。和
@AfterMapping

@Mapper
public interface MyMapper {


    MyDTOClass mapMyEntity(MyEntityClass myEntityClass, @Context Server server);

    List<MyDTOClass> mapMyEntity(List<MyEntityClass> myEntityClass, @Context Server server);

    @AfterMapping
    default void afterMapping(@MappingTarget MyDTOClass target, @Context Server server) {
        target.setServer(server);
    }
}
@Mapper
公共接口MyMapper{
MyDTOClass mapMyEntity(MyEntityClass MyEntityClass,@Context Server);
List mapMyEntity(List myEntityClass,@Context Server);
@后映射
默认的void afterMapping(@MappingTarget MyDTOClass target,@Context Server){
target.setServer(服务器);
}
}

您可以使用
1.2
中的新版本来实现这一点。和
@AfterMapping

@Mapper
public interface MyMapper {


    MyDTOClass mapMyEntity(MyEntityClass myEntityClass, @Context Server server);

    List<MyDTOClass> mapMyEntity(List<MyEntityClass> myEntityClass, @Context Server server);

    @AfterMapping
    default void afterMapping(@MappingTarget MyDTOClass target, @Context Server server) {
        target.setServer(server);
    }
}
@Mapper
公共接口MyMapper{
MyDTOClass mapMyEntity(MyEntityClass MyEntityClass,@Context Server);
List mapMyEntity(List myEntityClass,@Context Server);
@后映射
默认的void afterMapping(@MappingTarget MyDTOClass target,@Context Server){
target.setServer(服务器);
}
}

你的问题不是很清楚。你到底想画什么?
列表从哪里来?我的基本映射是MyDTOClass mapMyEntity,我想将其扩展到集合中。但将同一服务器对象附加到列表的所有实例。我添加了伪代码。希望现在清楚了。你的问题不是很清楚。你到底想画什么?
列表从哪里来?我的基本映射是MyDTOClass mapMyEntity,我想将其扩展到集合中。但将同一服务器对象附加到列表的所有实例。我添加了伪代码。希望现在清楚了。