Как часть GRP C api Я пытаюсь сопоставить прото-сгенерированные классы с pojo. Это .proto файл
message AccountModelProto
{
repeated VerificationModelProto verification = 1;
}
message VerificationModelProto
{
string status = 1;
string comment = 2;
string verificationType = 3;
repeated VerificationAttributeModelProto verificationAttributes = 4;
}
message VerificationAttributeModelProto
{
string type = 1;
string label = 2;
bool attributeStatus = 3;
}
Маппер для приведенного выше кода. Я ссылался на примеры, предоставляемые mapstruct в соответствии с ним. Мне не нужно предоставлять явное отображение VerificationModelProto в List, но я получаю ошибку компилятора
error: Невозможно отобразить свойство "Проверка коллекции" в "VerificationModelProto проверочный список". Попробуйте объявить / реализовать метод сопоставления: «VerificationModelProto map (Collection value)».
@Mapping(source = "verification", target = "verificationList", qualifiedByName = "verificationModelToVerificationProtoMapping")
AccountModelProto map(AccountModel accountModel);
@Named("verificationModelToVerificationProtoMapping")
default VerificationModelProto map (VerificationModel verificationModel)
{
VerificationModelProto.Builder builder = VerificationModelProto.newBuilder()
.setComment(verificationModel.getComment())
.setStatus(verificationModel.getStatus().toString())
.setVerificationType(verificationModel.getVerificationType());
for(VerificationAttributeModel verificationAttributeModel: verificationModel.getVerificationAttributes())
{
builder.addVerificationAttributes(getVerificationAttributeBuilder(verificationAttributeModel));
}
return builder.build();
}
default VerificationAttributeModelProto getVerificationAttributeBuilder(VerificationAttributeModel verificationAttributeModel)
{
VerificationAttributeModelProto.Builder builder = VerificationAttributeModelProto.newBuilder()
.setAttributeStatus(verificationAttributeModel.getAttributeStatus())
.setType(verificationAttributeModel.getType())
.setLabel(verificationAttributeModel.getLabel());
return builder.build();
}
Как пройти через это. Я добавил CollectionMappingStrategy как CollectionMappingStrategy.ADDER_PREFERRED.