我有一個列表List<Payment>
,我想映射到另一個列表List<PaymentPlan>
。這些類型是這樣的:mapStruct:地圖列表到其他列表?
public class Payment {
@XmlElement(name = "Installment")
@JsonProperty("Installment")
private List<Installment> installments = new ArrayList<>();
@XmlElement(name = "OriginalAmount")
@JsonProperty("OriginalAmount")
private BigDecimal originalAmount;
//getters setters, more attributes
}
和....
public class PaymentPlan {
//(Installment in different package)
private List<Installment> installments;
@XmlElement(name = "OriginalAmount")
@JsonProperty("OriginalAmount")
private BigDecimal originalAmount;
//getters setters, more attributes
}
我希望這樣的事情是工作...
@Mappings({
@Mapping(//other mappings...),
@Mapping(source = "payments", target = "paymentInformation.paymentPlans")
})
ResultResponse originalResponseToResultResponse(OrigResponse originalResponse);
...但我得到:
Can't map property java.util.List<Payment> to java.util.List<PaymentPlan>.
Consider to declare/implement a mapping method java.util.List<PaymentPlan> map(java.util.List<Payment> value);
我不知道如何將其應用於形成。首先,我雖然我需要聲明一些額外的映射(在相同的映射類)的名單,所以MapStruct知道如何像這樣的列表類型的每個字段映射:
@Mappings({
@Mapping(source = "payment.originalAmount", target = "paymentInformation.paymentPlan.originalAmount")
})
List<PaymentPlan> paymentToPaymentPlan(List<Payment> payment);
...但我得到的錯誤像
The type of parameter "payment" has no property named "originalAmount".
顯然我做了一些完全錯誤的,因爲它聽起來像它甚至不承認列表的類型。
我怎樣才能基本上從一個列表映射到另一個類似的列表?很顯然,我需要結合不同的映射策略。
順便說一句:我知道如何與表情映射,像這樣做...
@Mapping(target = "paymentPlans",expression="java(Helper.mapManually(payments))")
,但我想MapStruct可以通過iself處理這個問題。
我明白。它現在起作用,thx。 – Bevor