Memahami Penggantian Anotasi Lajur dalam JPA But Spring
JPA But Spring, rangka kerja ORM yang popular, membenarkan pembangun menganotasi entiti dengan @Column untuk tentukan nama lajur tertentu dalam pangkalan data. Walau bagaimanapun, telah diperhatikan bahawa dalam senario tertentu, JPA mungkin mengabaikan anotasi @Column dan lalai kepada versi bergaris bawah nama harta dalam skema pangkalan data.
Mengapa JPA Boleh Abaikan Anotasi Lajur
Satu sebab yang mungkin untuk JPA mengabaikan anotasi @Column mungkin adalah strategi penamaan yang digunakan oleh rangka kerja Hibernate yang mendasari. Secara lalai, Hibernate menggunakan strategi org.hibernate.cfg.ImprovedNamingStrategy, yang menjana nama lajur Snake Case tanpa mengira anotasi @Column.
Penyelesaian: Strategi Penamaan EJB3
Untuk menyelesaikan isu ini dan memastikan JPA menghormati anotasi @Column, anda boleh menetapkan strategi penamaan Hibernate secara eksplisit kepada org.hibernate.cfg.EJB3NamingStrategy. Strategi ini akan mengekalkan jarak huruf besar dan huruf yang dinyatakan dalam anotasi @Column.
Pertimbangan Dialek Pelayan SQL
Jika anda menyambung ke Microsoft SQL Server, anda mungkin menghadapi isu berbeza di mana Hibernate menggunakan dialek org.hibernate.dialect.SQLServerDialect. Dialek ini boleh membawa kepada ketidakkonsistenan penamaan, di mana JPA mungkin menggunakan nama lajur huruf bercampur, walaupun dengan strategi penamaan EJB3.
Strategi Penamaan Tersirat dan Fizikal Warisan
Untuk menangani isu ini, anda boleh menambahkan sifat berikut pada fail application.properties anda:
<code class="properties">spring.jpa.hibernate.naming.implicit-strategy=org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyJpaImpl spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl</code>
Tetapan ini akan memaksa Hibernate untuk menggunakan strategi penamaan Fizikal Tersirat dan Standard Legacy, yang akan memastikan anotasi @Column adalah dihormati dan nama lajur dijana secara konsisten.
Atas ialah kandungan terperinci Mengapa JPA Kadangkala Mengabaikan Anotasi @Column dalam Spring Boot?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!