Sah*_*heb 6 java collections java-8 mapstruct
我正在尝试使用这样的映射结构更新集合:
List<Passenger> updatePassengers(@MappingTarget List<Passenger> passengers, List<Passenger> sourcePassenger);
Passenger updatePassenger(@MappingTarget Passenger passenger, Passenger sourcePassenger);
Run Code Online (Sandbox Code Playgroud)
现在在生成的源中 updatePassenger 方法生成如下:
public List<Passenger> updatePassengers(List<Passenger> passengers, List<Passenger> sourcePassenger) {
if ( sourcePassenger == null ) {
return null;
}
passengers.clear();
for ( Passenger passenger : sourcePassenger ) {
passengers.add( passenger );
}
return passengers;
}
Run Code Online (Sandbox Code Playgroud)
这里是将乘客从目的地移走,并将乘客从源地设置。我想更新个别乘客对象。
我浏览了 mapstruct 文档,它说它在更新之前清除集合。
有没有一种方法可以为每个乘客调用 updatePassenger 方法?
如果您不希望 MapStruct 启动默认行为,您应该编写自己的自定义方法来执行更新。
default List<Passenger updatePassengers(List<Passenger> passenger, Lit<Passenger> sourcePassengers) {
//Do your logic here
}
Run Code Online (Sandbox Code Playgroud)
最重要的是,MapStruct 无法生成您需要的代码,它不知道哪个乘客应该与哪个乘客链接。
在您的定义中,您是说您希望passenger列表随sourcePassengers列表一起更新。