Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk Menjana ID untuk Superclass Abstrak dalam Aplikasi Spring MVC menggunakan Hibernate dan MySQL?

Bagaimana untuk Menjana ID untuk Superclass Abstrak dalam Aplikasi Spring MVC menggunakan Hibernate dan MySQL?

Patricia Arquette
Patricia Arquetteasal
2024-11-09 20:34:02255semak imbas

How to Generate IDs for Abstract Superclasses in Spring MVC Applications using Hibernate and MySQL?

@GeneratedValue Polymorphic Abstract Superclass over MySQL

Apabila bekerja dengan superclass abstrak dan @GeneratedValue dalam aplikasi Spring MVC menggunakan Hibernate dan MySQL, ia adalah penting untuk mempertimbangkan keperluan khusus dan had pangkalan data. Ralat "Jadual 'docbd.hibernate_sequences' tidak wujud" sering timbul apabila GenerationType.TABLE digunakan dengan MySQL, yang tidak menyokong jujukan secara asli.

Gambaran Keseluruhan Masalah

Isu ini berlaku kerana GenerationType.TABLE memerlukan jadual yang dipanggil "hibernate_sequences" untuk menyimpan nilai urutan. Oleh kerana MySQL tidak mempunyai jadual ini, Hibernate cuba menciptanya, mengakibatkan ralat. Selain itu, menggunakan GenerationType.IDENTITY tidak boleh dilaksanakan apabila mengurus ID dalam superclass abstrak.

Penyelesaian

Walaupun terhad dengan GenerationType.TABLE dan GenerationType.IDENTITY, terdapat penyelesaian yang menangani kedua-dua isu. Daripada bergantung pada jadual jujukan atau AUTO_INCREMENT, mengambil ID seterusnya secara manual dan menetapkannya sebelum menyimpan entiti akan menyelesaikan masalah. Pendekatan ini melibatkan langkah berikut:

  1. Buat kaedah perkhidmatan yang berasingan untuk menjana ID baharu.
  2. Di dalam kaedah ini, dapatkan semula nilai ID maksimum daripada jadual yang sepadan dengan entiti yang disimpan .
  3. Naikkan ID maksimum dengan nilai yang dipratentukan (mis., 1 atau 100 untuk peningkatan concurrency).
  4. Kembalikan ID yang dijana.
  5. Dalam kelas DAO anda, gantikan anotasi @GeneratedValue dengan panggilan kaedah tersuai untuk mendapatkan ID yang dijana.
  6. Tetapkan yang dijana ini ID menggunakan kaedah setId() pada entiti sebelum menyimpannya.

Pendekatan ini dengan berkesan menjana ID baharu tanpa bergantung pada jujukan atau AUTO_INCREMENT. Ia memberikan fleksibiliti yang lebih besar dan memastikan bahawa isu urutan yang tidak wujud dalam MySQL diselesaikan.

Atas ialah kandungan terperinci Bagaimana untuk Menjana ID untuk Superclass Abstrak dalam Aplikasi Spring MVC menggunakan Hibernate dan MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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