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
Lepaskan: 2024-11-24 19:38:49
asal
855 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk
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 Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan