Mapa List <String> con Mapstruct desde Java POJO a Protobuf (proto3)

sin problemas:

Estoy tratando de trazar algunos POJOs de Java para Protobuf (proto3). Algunos de ellos contienen listas. Mientras que la relación de listas con POJOs (por ejemplo, lista) no es un problema, estoy recibiendo un UnsupportedOperationException.

Ejemplo con List<Product>(esto funciona corrctly):

ProductProtobuf.Builder map(Product product);

@Mapping(target = "productsList", source = "products")
ResponseProtobuf.Builder map(Response response);

Ejemplo con List<String>(esto no funciona):

@Mapping(target = "usersList", source = "users")
ResponseProtobuf.Builder map(Response response);

Además, tengo una Mapper para el constructor:

public ResponseProtobuf.Builder responseBuilder() {
    return ResponseProtobuf.newBuilder();
}

public ProductProtobuf build(ProductProtobuf.Builder builder) {
    return builder.build();
}
Filip:

El problema es que MapStruct utilizará getProductsList().addAll(). Con el fin de evitar esto se debe utilizar CollectionMappingStrategy.ADDER_PREFERRED collectionMappingStrategy. Echar un vistazo a la UserMapperde la mapstruct-protobuf3 en el mapstruct ejemplos de pases.

En pocas palabras es necesario agregar:

@Mapper(collectionMappingStrategy = CollectionMappingStrategy.ADDER_PREFERRED,
    nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS)

a su asignador.

Una información con respecto a su constructor, en caso de que utilice 1.3.0.Beta1 que no lo necesita, ya que está fuera de la ayuda de la caja para que, en MapStruct ahora.

NB: Se produjo un error en MapStruct que no estaba funcionando correctamente con ProtocolStringList. Este error se ha corregido en 1.3.0.Beta1. Si se intenta con esta versión debería funcionar (en caso de que productListes una String)

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=189854&siteId=1
Recomendado
Clasificación