Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Memperbaiki Kemasukan Medan Auto-Increment Hibernate yang Tidak Dijangka dalam Penyata INSERT MySQL?
Menganotasi Medan Autoincrement MySQL dengan Anotasi JPA
Dalam JPA, anotasi @GeneratedValue digunakan untuk menentukan cara nilai sesuatu yang dijana secara automatik lajur hendaklah dijana. Untuk MySQL, lajur kenaikan automatik biasanya dipetakan dengan strategi GenerationType.IDENTITY. Walau bagaimanapun, jika SQL yang dijana termasuk medan autokenaikan, mungkin terdapat ketidakpadanan konfigurasi.
Dalam kes yang diberikan, objek Operator mempunyai medan autokenaikan berikut:
@Id @GeneratedValue private Long id;
Anotasi ini harus menghasilkan SQL berikut:
insert into Operator (active, password, username) values (?, ?, ?)
Walau bagaimanapun, log yang disediakan menunjukkan bahawa SQL termasuk id lajur:
Hibernate: insert into Operator (active, password, username, id) values (?, ?, ?, ?)
Untuk menyelesaikannya, pastikan langkah berikut diikuti:
CREATE TABLE `operator` ( `id` INT(10) NOT NULL AUTO_INCREMENT, ...
Jika isu itu berterusan, mungkin perlu untuk menyatakan secara eksplisit strategi penjanaan identiti:
@Id @GeneratedValue(strategy=GenerationType.IDENTITY) private Long id;
Atas ialah kandungan terperinci Bagaimana untuk Memperbaiki Kemasukan Medan Auto-Increment Hibernate yang Tidak Dijangka dalam Penyata INSERT MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!