Menggunakan Urutan Pangkalan Data untuk Lajur Bukan ID dalam JPA Hibernate
Apabila bekerja dengan Hibernate sebagai pembekal JPA, anda mungkin menghadapi keperluan untuk menjana nilai bagi lajur yang bukan sebahagian daripada pengecam. Malangnya, anotasi @GeneratedValue, yang lazimnya digunakan untuk kunci utama penambahan automatik, tidak boleh digunakan dalam senario ini.
Pertama sekali, adalah penting untuk memahami bahawa Hibernate/JPA tidak menjana nilai secara automatik untuk sifat bukan ID. Anotasi @GeneratedValue digunakan semata-mata untuk mengurus penjanaan kunci utama. Sebaliknya, nilai yang dijana pangkalan data dijangka.
Untuk mengatasi pengehadan ini, pertimbangkan untuk mencipta entiti berasingan dengan pengecam yang dijana, yang dikenali sebagai "Entiti Utama Pengganti." Lajur Bukan ID yang dipersoalkan kemudiannya boleh dikaitkan dengan entiti pengganti ini menggunakan perhubungan OneToOne.
Contoh Pelaksanaan:
// Surrogate Key Entity @Entity public class SurrogateEntity { @Id @GeneratedValue(...) private Long number; } // Main Entity @Entity public class MyEntity { @Id private Long id; @OneToOne(...) private SurrogateEntity myVal; }
Dengan pendekatan ini, nilai kerana harta myVal akan dijana oleh pangkalan data selepas membuat contoh MyEntity baharu. Penyelesaian ini membolehkan anda menggunakan keupayaan pengendalian nilai yang dijana pangkalan data Hibernate untuk lajur bukan ID.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menjana Urutan Pangkalan Data untuk Lajur Bukan ID dalam JPA Hibernate?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!