Mapstruct:更新集合中的单个模型
Mapstruct: update individual models in collection
我正尝试像这样使用 mapstruct 更新集合:
List<Passenger> updatePassengers(@MappingTarget List<Passenger> passengers, List<Passenger> sourcePassenger);
Passenger updatePassenger(@MappingTarget Passenger passenger, Passenger sourcePassenger);
现在在生成源中 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;
}
这里是把passenger从destination中移除,从source中设置passenger。我想更新个别乘客对象。
我浏览了 mapstruct 文档,它说它在更新之前清除集合。
有没有办法让 mapstruct 为每位乘客调用 updatePassenger 方法?
如果您不希望 MapStruct 的默认行为生效,您应该编写自己的自定义方法来执行更新。
default List<Passenger updatePassengers(List<Passenger> passenger, Lit<Passenger> sourcePassengers) {
//Do your logic here
}
最重要的是,MapStruct 无法生成您需要的代码,它不知道应该将哪个乘客与哪个乘客相关联。
在您的定义中,您是说您希望 passenger
列表与 sourcePassengers
列表一起更新。
我正尝试像这样使用 mapstruct 更新集合:
List<Passenger> updatePassengers(@MappingTarget List<Passenger> passengers, List<Passenger> sourcePassenger);
Passenger updatePassenger(@MappingTarget Passenger passenger, Passenger sourcePassenger);
现在在生成源中 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;
}
这里是把passenger从destination中移除,从source中设置passenger。我想更新个别乘客对象。
我浏览了 mapstruct 文档,它说它在更新之前清除集合。
有没有办法让 mapstruct 为每位乘客调用 updatePassenger 方法?
如果您不希望 MapStruct 的默认行为生效,您应该编写自己的自定义方法来执行更新。
default List<Passenger updatePassengers(List<Passenger> passenger, Lit<Passenger> sourcePassengers) {
//Do your logic here
}
最重要的是,MapStruct 无法生成您需要的代码,它不知道应该将哪个乘客与哪个乘客相关联。
在您的定义中,您是说您希望 passenger
列表与 sourcePassengers
列表一起更新。