Rumah > Artikel > pangkalan data > Bagaimana untuk Menyelesaikan Ralat "Lajur tidak diketahui 'sequence_name' dalam 'where clause'" Apabila Menggunakan @GeneratedValue GenerationType.TABLE dengan Superclass Abstrak Polimorfik dalam MySQL?
Dalam aplikasi Spring MVC yang menggunakan Hibernate dan MySQL, telah diperhatikan bahawa percubaan untuk mengekalkan subkelas superclass abstrak, BaseEntity , menghadapi ralat "Jadual 'docbd.hibernate_sequences' tidak wujud". Ralat ini timbul daripada penggunaan GenerationType.TABLE untuk @GeneratedValue, dan kekurangan sokongan jujukan dalam MySQL.
Sejak menggunakan GenerationType.IDENTITY tidak berdaya maju kerana ID entiti pengurusan superclass abstrak dan GenerationType.SEQUENCE adalah tidak disokong, ia menimbulkan persoalan bagaimana untuk menyelesaikan masalah ini. Coretan kod yang disediakan menggambarkan superclass abstrak (BaseEntity), contoh subclass (CCD), Domain Specific Language (DDL) dan kod JPQL dalam Data Access Object (DAO).
Strategi pewarisan yang digunakan ialah InheritanceType .TABLE_PER_CLASS, menunjukkan jadual berasingan untuk setiap subkelas. Memandangkan ketidakupayaan MySQL untuk menggunakan jujukan, alternatif menggunakan GenerationType.TABLE tidak dapat dielakkan membawa kepada ketiadaan jadual hibernate_sequences.
Poster menegaskan bahawa menggunakan @MappedSuperClass bukanlah pilihan yang berdaya maju, memetik keperluan untuk hubungan ManyToOne yang boleh ditukar ganti. . Sebagai contoh, AccessLog mengandungi actor_entity dan target_entity, kedua-duanya mewarisi daripada BaseEntity. Dalam senario ini, menggunakan @MappedSuperClass akan mengakibatkan ralat yang menunjukkan bahawa AccessLog tidak dapat mengesan BaseEntity.
Dalam percubaan untuk menyelesaikan isu ini, jadual hibernate_sequences telah dibuat seperti yang dicadangkan. Walau bagaimanapun, ralat baharu muncul: "Lajur 'sequence_name' tidak diketahui dalam 'where clause.'" Ralat ini menunjukkan kepada pertanyaan SQL yang dimulakan oleh Hibernate: "pilih sequence_next_hi_value daripada hibernate_sequences where sequence_name = 'BaseEntity' untuk kemas kini."
Untuk menangani ralat khusus ini, poster memerlukan bantuan dalam menyelesaikan lajur 'sequence_name' yang hilang dalam jadual hibernate_sequences.
Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Ralat "Lajur tidak diketahui 'sequence_name' dalam 'where clause'" Apabila Menggunakan @GeneratedValue GenerationType.TABLE dengan Superclass Abstrak Polimorfik dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!