Bagaimana untuk Menyelesaikan Ralat 'Lajur tidak diketahui 'sequence_name'' Apabila Menggunakan @GeneratedValue pada Superclass Abstrak Polimorfik dengan MySQL?

Barbara Streisand
Lepaskan: 2024-11-22 07:09:14
asal
975 orang telah melayarinya

How to Resolve

@GeneratedValue Polymorphic Abstract Superclass Over MySQL

Dalam aplikasi Spring MVC menggunakan Hibernate dan MySQL, anda mungkin menghadapi masalah apabila menggunakan @GeneratedValue pada superclass abstrak dengan subkelas yang memanjangkannya. Berikut ialah pandangan yang lebih dekat pada masalah dan penyelesaiannya.

Masalah

Apabila menyimpan subkelas bagi BaseEntity superclass abstrak dalam MySQL, anda mungkin menerima ralat mengenai bukan- kewujudan jadual hibernate_sequences. Ini berlaku kerana MySQL tidak menyokong jujukan, dan GenerationType.TABLE (nilai lalai untuk @GeneratedValue) memerlukan penggunaan jujukan.

Penyelesaian

Untuk mengatasinya isu, anda perlu mencipta jadual yang dipanggil hibernate_sequences dalam MySQL, seperti yang dicadangkan oleh JBNizet dalam suntingan kedua asal soalan. Walau bagaimanapun, walaupun selepas membuat jadual, anda mungkin menghadapi ralat lain: "Lajur tidak diketahui 'sequence_name' dalam 'where clause'".

Untuk menyelesaikannya, ubah suai penyataan SELECT yang dijana oleh Hibernate untuk menentukan sequence_name dengan betul:

Hibernate: select sequence_next_hi_value from hibernate_sequences where sequence_name = 'BaseEntity' for update
Salin selepas log masuk

Tukar pernyataan kepada:

Hibernate: select sequence_next_hi_value from hibernate_sequences where sequence_names = 'BASE_ENTITY' for update
Salin selepas log masuk

Pastikan nama jujukan ditulis dengan huruf besar dalam pernyataan SELECT, yang sepatutnya sepadan dengan nama jujukan yang anda tentukan semasa pembuatan jadual (buat jadual ... pernyataan).

Setelah nama jujukan betul, Hibernate SQL akan berfungsi dengan lancar, membolehkan anda untuk simpan subkelas BaseEntity tanpa menghadapi ralat "nama_jujukan'" lajur tidak diketahui.

Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Ralat 'Lajur tidak diketahui 'sequence_name'' Apabila Menggunakan @GeneratedValue pada Superclass Abstrak Polimorfik dengan MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan