ホームページ >Java >&#&チュートリアル >MapStruct が Lombok の @Getter および @Setter 注釈を認識できないのはなぜですか?それを修正するにはどうすればよいですか?

MapStruct が Lombok の @Getter および @Setter 注釈を認識できないのはなぜですか?それを修正するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-24 19:38:49823ブラウズ

Why Does MapStruct Fail to Recognize Lombok's @Getter and @Setter Annotations, and How Can I Fix It?

Lombok を使用した MapStruct マッピングの不明な @Getter および @Setter 注釈

問題の説明

MapStruct と Lombok を統合すると、「不明なプロパティ」というエラーが発生する可能性があります...結果の型に ..." エンティティおよび DTO クラスで @Getter および @Setter アノテーションを使用する場合 一緒に。この問題は、両方のライブラリのバージョンに互換性があるにもかかわらず発生します。

解決策

この問題は、Maven が Lombok プロセッサを無視して MapStruct プロセッサのみを使用するために発生します。これを解決するには:

オプション 1: アノテーション プロセッサ パスに Lombok 依存関係を追加します

Maven コンパイラー プラグイン設定で、Lombok 依存関係を annotationProcessorPaths リストに追加します:

<annotationProcessorPaths>
    <path>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>${org.projectlombok.version}</version>
    </path>
    ...
</annotationProcessorPaths>

さらに、Lombok 1.18.16 および上記では、次のパスを追加します:

<path>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok-mapstruct-binding</artifactId>
    <version>0.2.0</version>
</path>

オプション 2: MapStruct プロセッサの依存関係を追加

または、MapStruct プロセッサを依存関係として追加し、annotationProcessorPaths:

<dependencies>
    <dependency>
        <groupId>org.mapstruct</groupId>
        <artifactId>mapstruct-processor</artifactId>
        <version>${org.mapstruct.version}</version>
    </dependency>
</dependencies>
注: 内部的な問題が発生しないようにするには、オプション 1 をお勧めします。 MapStruct クラスはコード内で参照されます。

Intellij 構成

IntelliJ で注釈処理を有効にするには、[IntelliJ の問題 IDEA-150621](https:/) により、提供された依存関係として MapStruct プロセッサを追加します。 /youtrack.jetbrains.com/issue/IDEA-150621).

以上がMapStruct が Lombok の @Getter および @Setter 注釈を認識できないのはなぜですか?それを修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。