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.
Isu timbul kerana Maven menggunakan pemproses MapStruct secara eksklusif, mengabaikan Lombok. Untuk menyelesaikan masalah ini:
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>
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.
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!