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 列表一起更新。