Anotasi Nama Lajur Diabaikan dalam Spring Boot JPA: Memahami Percanggahan
Dalam aplikasi Spring Boot dengan JPA, pembangun mungkin menghadapi isu pelik di mana anotasi lajur dengan nama tersuai diabaikan, menyebabkan SQL menjana nama lajur mengikut konvensyen lalai. Artikel ini menyelidiki sebab di sebalik pengawasan ini dan menyediakan penyelesaian yang berdaya maju.
Strategi penamaan standard yang digunakan oleh Hibernate dalam JPA ialah DefaultNamingStrategy, yang memetakan nama entiti dan lajur kepada SQL menggunakan pelbagai peraturan penukaran. Walau bagaimanapun, strategi ini mungkin tidak mempertimbangkan secara eksplisit anotasi lajur, menyebabkan nama lajur lalai (dalam kes ini, "test_name") dijana dan bukannya nama beranotasi ("TestName").
Untuk menangani percanggahan ini, adalah perlu untuk mengkonfigurasi strategi penamaan Hibernate secara eksplisit. Dengan menetapkan spring.jpa.hibernate.naming_strategy=org.hibernate.cfg.EJB3NamingStrategy dalam sifat aplikasi, Hibernate akan bertukar kepada EJB3NamingStrategy. Strategi ini mengekalkan nama anotasi lajur, menyelesaikan isu asal.
Walau bagaimanapun, konfigurasi ini mungkin tidak boleh digunakan secara universal. Dalam senario tertentu, dialek Hibernate yang mendasari juga boleh mempengaruhi konvensyen penamaan. Sebagai contoh, apabila menyambung ke Microsoft SQL Server 2014 Express, Hibernate menggunakan SQLServerDialect secara lalai. Dialek ini mungkin tidak menyokong sepenuhnya strategi penamaan yang diingini, walaupun apabila dikonfigurasikan secara eksplisit.
Untuk mengatasi had ini, Hibernate 5 menawarkan pilihan konfigurasi tambahan:
Dengan menetapkan kedua-dua sifat ini kepada org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyJpaImpl dan org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl masing-masing, anda boleh secara berkesan mengatasi tingkah laku penamaan lalai dan pastikan nama lajur beranotasi dihormati.
Atas ialah kandungan terperinci Mengapa Anotasi Lajur Saya Diabaikan dalam Spring Boot JPA?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!