Rumah >Java >javaTutorial >Mengapa MapStruct Gagal Mengenali Anotasi @Getter dan @Setter Lombok, dan Bagaimana Saya Boleh Membetulkannya?

Mengapa MapStruct Gagal Mengenali Anotasi @Getter dan @Setter Lombok, dan Bagaimana Saya Boleh Membetulkannya?

Barbara Streisand
Barbara Streisandasal
2024-11-24 19:38:49773semak imbas

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

Unknown @Getter dan @Setter Anotasi dalam MapStruct Mappings dengan Lombok

Perihalan Masalah

Mengintegrasikan MapStruct dan Lombok boleh membawa kepada ralat "Hartanah tidak diketahui ... dalam jenis hasil ..." apabila menggunakan anotasi @Getter dan @Setter pada entiti dan DTO kelas bersama-sama. Ini berlaku walaupun versi kedua-dua perpustakaan serasi.

Penyelesaian

Isu timbul kerana Maven menggunakan pemproses MapStruct secara eksklusif, mengabaikan Lombok. Untuk menyelesaikan masalah ini:

Pilihan 1: Tambahkan Ketergantungan Lombok pada Laluan Pemproses Anotasi

Dalam konfigurasi pemalam pengkompil Maven, tambahkan kebergantungan Lombok pada senarai anotasiProcessorPaths:

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

Selain itu, untuk Lombok 1.18.16 dan ke atas, tambahkan yang berikut laluan:

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

Pilihan 2: Tambah Ketergantungan Pemproses MapStruct

Sebagai alternatif, tambahkan pemproses MapStruct sebagai kebergantungan dan alih keluar anotasiProcessorPaths:

<dependencies>
    <dependency>
        <groupId>org.mapstruct</groupId>
        <artifactId>mapstruct-processor</artifactId>
        <version>${org.mapstruct.version}</version>
    </dependency>
</dependencies>
NOTA: Pilihan 1 disyorkan untuk memastikan tiada kelas MapStruct dalaman dirujuk dalam kod.

Konfigurasi Intellij

Untuk mendayakan pemprosesan anotasi dalam IntelliJ, tambahkan pemproses MapStruct sebagai kebergantungan yang disediakan disebabkan oleh [IntelliJ issue IDEA-150621](https://youtrack. jetbrains.com/issue/IDEA-150621).

Atas ialah kandungan terperinci Mengapa MapStruct Gagal Mengenali Anotasi @Getter dan @Setter Lombok, dan Bagaimana Saya Boleh Membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn