0
votes

Mapstructeur avec @MappingTarget n'appelle pas de Builder Lombok ()

J'essaie de créer une méthode de correctif avec la cartographie de MapStruit et le constructeur de Lombok. Mais dans le code généré manquant build () code> appel

mapper avec la suppression des valeurs null: p>

    @Override
    public Cart patch(CartRequest cartRequest, Cart cart) {
        if ( cartRequest == null ) {
            return null;
        }

        if ( cartRequest.getCustomer() != null ) {
            if ( cart.getCustomer() == null ) {
                cart.setCustomer( Customer.builder() ); // HERE build() missing
            }
            customerRequestToCustomer1( cartRequest.getCustomer(), cart.getCustomer() );
        }
        if ( cartRequest.getOwner() != null ) {
            if ( cart.getOwner() == null ) {
                cart.setOwner( Owner.builder() ); // HERE build() missing
            }
            ownerRequestToOwner1( cartRequest.getOwner(), cart.getOwner() );
        }
        if ( cartRequest.getPrice() != null ) {
            cart.setPrice( cartRequest.getPrice() );
        }
        if ( cartRequest.getVoucher() != null ) {
            cart.setVoucher( cartRequest.getVoucher() );
        }

        return cart;
    }


0 commentaires

4 Réponses :


1
votes

Ceci est un bug de Mapstructeur 1.3.0.final.

Je suggérerais de suivre MAPRUCTRER / MAPSRUCT # 1742 pour le correctif. < / p>

La solution actuelle serait de désactiver complètement les constructeurs en définissant le noopbuilderprovider via SPI.


0 commentaires

1
votes

Vérifiez cette a travaillé pour moi Même avec seulement @Builder et @geter


0 commentaires

0
votes

Comme Gregory Mazur a signalé, Cet article m'a aidé De plus, mais j'avais un système de construction maven. Voici la version de configuration de Maven:

  <dependencies>
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <version>1.18.12</version>
    </dependency>
    <dependency>
      <groupId>org.mapstruct</groupId>
      <artifactId>mapstruct-jdk8</artifactId>
      <version>1.3.1.Final</version>
    </dependency>
    ...
  </dependencies>
  ...
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.5.1</version>
    <configuration>
      <source>${maven.compiler.source}</source>
      <target>${maven.compiler.target}</target>
      <annotationProcessorPaths>
        <path>
          <groupId>org.mapstruct</groupId>
          <artifactId>mapstruct-processor</artifactId>
          <version>1.3.1.Final</version>
        </path>
        <path>
          <groupId>org.projectlombok</groupId>
          <artifactId>lombok</artifactId>
          <version>1.18.12</version>
        </path>
      </annotationProcessorPaths>
    </configuration>
  </plugin>


0 commentaires

1
votes

Mise à jour pour Lombok 1.18.16.

Démarrage de cette version Configuration de travail pour Maven-compiler-plugin CODE> est P>

<plugin>
    <artifactId>maven-compiler-plugin</artifactId>
    <configuration>
        <annotationProcessorPaths>
            <path>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok-mapstruct-binding</artifactId>
                <version>0.2.0</version>
            </path>
            <path>
                <groupId>org.mapstruct</groupId>
                <artifactId>mapstruct-processor</artifactId>
                <version>1.4.1.Final</version>
            </path>
            <path>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>1.18.16</version>
            </path>
        </annotationProcessorPaths>
    </configuration>
</plugin>


0 commentaires