• Mapstruct使用时报Unknown property xxx in result type xxx. Did you mean null?


    0.背景

    使用mapstruct时出现:

    Unknown property "xxx" in result type xxx. Did you mean "null"?

    同时,项目中也用到了lombok。

    mapstruct版本: 1.4.1.Final

    lombok版本: 1.8.22 (继承的Spring2.5.6)

    <!-- mapstruct START-->
    <dependency>
        <groupId>org.mapstruct</groupId>
        <artifactId>mapstruct</artifactId>
        <version>${mapstruct.version}</version>
        <!--这个scope 只能作用在编译和测试时,同时没有传递性。-->
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.mapstruct</groupId>
        <artifactId>mapstruct-processor</artifactId>
        <version>${mapstruct.version}</version>
        <scope>provided</scope>
    </dependency>
    <!-- mapstruct END -->
    
    <!-- lombok -->
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <scope>provided</scope>
    </dependency>
    

    1.解决

    1.1 方案1:调整顺序

    代码生成器annotationProcessor标签部分,将lombok放在mapstruct之前

        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.8.1</version>
                    <configuration>
                        <source>1.8</source>
                        <target>1.8</target>
                        <encoding>UTF-8</encoding>
                        <!--自动生成代码annotationProcessor-->
                        <annotationProcessorPaths>
                            <path>
                                <groupId>org.projectlombok</groupId>
                                <artifactId>lombok</artifactId>
                                <version>${lombok.version}</version>
                            </path>
                            <path>
                                <groupId>org.mapstruct</groupId>
                                <artifactId>mapstruct-processor</artifactId>
                                <version>${mapstruct.version}</version>
                            </path>
                        </annotationProcessorPaths>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    

    1.2 方案2:官网叽叽歪歪一堆

    官网说Lombok 1.18.16或更高版本要添加lombok-mapstruct-binding的依赖,但是经过方案1我的问题它就解决了

    原文在这里:https://mapstruct.org/faq/

    其实文中也提到了先在模块1使用lombok再在模块2使用mapstruct。

    image-20220121002958457

    留个备用:

            <!-- mapStruct-lombok -->
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok-mapstruct-binding</artifactId>
                <version>0.2.0</version>
                <scope>provided</scope>
            </dependency>
    
  • 相关阅读:
    什么是同源策略,什么是跨域,如何跨域,Jsonp/CORS跨域
    Scrapy
    爬虫
    Falsk-信号
    python函数中把列表(list)当参数时的"入坑"与"出坑"
    SQLAlchemy基本使用(Flask中)
    列表生成式&生成器表达式
    javascript数据结构——队列
    javascript数据结构——栈
    js数组去重的几种方法
  • 原文地址:https://www.cnblogs.com/yang37/p/15828722.html
Copyright © 2020-2023  润新知