ホームページ > Java > &#&チュートリアル > Java で MapStruct と Lombok を一緒に使用する場合のコンパイル エラーを解決するにはどうすればよいですか?

Java で MapStruct と Lombok を一緒に使用する場合のコンパイル エラーを解決するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-12-06 21:06:16
オリジナル
942 人が閲覧しました

How to Resolve Compilation Errors When Using MapStruct and Lombok Together in Java?

MapStruct と Lombok は、Java コードの生産性と保守性を向上させるために使用できる 2 つの人気のある Java ライブラリです。ただし、一緒に使用すると、注釈処理の競合によりコンパイル エラーが発生する場合があります。この記事では、この問題の解決策を提供し、MapStruct と Lombok がシームレスに連携するように適切に設定する方法を説明します。

問題

MapStruct と Lombok を一緒に使用する場合場合、コンパイル プロセスが失敗し、次のようなエラー メッセージが表示される場合があります。

Unknown property "id" in result type com.vg.once.dto.OneDto. Did you mean "null"?
ログイン後にコピー

このエラーが発生する理由は次のとおりです。 MapStruct は DTO クラスのプロパティのゲッターとセッターを見つけることを想定していますが、Lombok は代わりに合成アクセサーとミューテーターを生成します。その結果、MapStruct はエンティティ クラスのプロパティを DTO クラスの対応するプロパティにマップできません。

解決策

この問題を解決するには、次のようにします。 Lombok の合成アクセサーとミューテーターを使用するように MapStruct に指示する必要があります。これは、次のアノテーションを Mapper インターフェイスに追加することで実行できます。

@Mapper(config = LombokProcessorConfig.class)
ログイン後にコピー

LombokProcessorConfig クラスは、Lombok の合成アクセサーとミューテーターを使用するように MapStruct に指示する組み込み MapStruct 構成クラスです。

これはLombok の合成アクセサーとミューテーターを使用する Mapper インターフェイスの例:

@Mapper(config = LombokProcessorConfig.class)
public interface OneMapper {

    @Mapping(target="id", source="one.id")
    OneDto createOne (One one);

}
ログイン後にコピー

追加の考慮事項

LombokProcessorConfig アノテーションの追加に加えて、他にもいくつかの事項があります。 MapStruct と Lombok を使用する場合は考慮する必要があります一緒に:

  • MapStruct と Lombok の互換性のあるバージョンを使用していることを確認してください。 MapStruct と Lombok の最新バージョンを常に推奨します。
  • Lombok の注釈処理プラグインが IDE で有効になっていることを確認してください。
  • Maven を使用している場合は、 LombokProcessorConfig クラスをクラスパスに追加します。これを行うには、pom.xml ファイルに次の依存関係を追加します。
<dependency>
    <groupId>org.mapstruct</groupId>
    <artifactId>mapstruct-processor</artifactId>
    <version>${mapstruct.version}</version>
    <classifier>ap</classifier>
</dependency>
ログイン後にコピー

結論

これらの手順に従って、MapStruct を使用できます。と Lombok を連携して、Java コードの生産性と保守性を向上させます。

以上がJava で MapStruct と Lombok を一緒に使用する場合のコンパイル エラーを解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート