В приложении Spring MVC, использующем Hibernate и MySQL, было замечено, что при попытке сохранить подклассы абстрактного суперкласса BaseEntity , обнаруживает ошибку «Таблица 'docbd.hibernate_sequences' не существует». Эта ошибка возникает из-за использования GenerationType.TABLE для @GeneratedValue и отсутствия поддержки последовательности в MySQL.
Поскольку использование GenerationType.IDENTITY нецелесообразно из-за абстрактного суперкласса, управляющего идентификаторами объектов, а GenerationType.SEQUENCE не поддерживается, возникает вопрос, как решить эту проблему. Предоставленные фрагменты кода иллюстрируют абстрактный суперкласс (BaseEntity), пример подкласса (CCD), предметно-ориентированный язык (DDL) и код JPQL в объекте доступа к данным (DAO).
Применяемая стратегия наследования — InheritanceType .TABLE_PER_CLASS, указывающий отдельные таблицы для каждого подкласса. Учитывая неспособность MySQL использовать последовательности, альтернатива использованию GenerationType.TABLE неизбежно приводит к отсутствию таблицы hibernate_sequences.
Плакат утверждает, что использование @MappedSuperClass не является жизнеспособным вариантом, ссылаясь на необходимость взаимозаменяемых отношений ManyToOne. . Например, AccessLog содержит actor_entity и target_entity, оба из которых наследуются от BaseEntity. В этом сценарии использование @MappedSuperClass приведет к ошибке, указывающей, что AccessLog не может найти BaseEntity.
В попытке решить проблему была создана таблица hibernate_sequences, как было предложено. Однако возникла новая ошибка: «Неизвестный столбец «sequence_name» в разделе «where». Эта ошибка указывает на SQL-запрос, инициированный Hibernate: «выберите последовательность_next_hi_value из hibernate_sequences, где последовательность_имя = 'BaseEntity' для обновления».
Чтобы устранить эту конкретную ошибку, автору сообщения требуется помощь в разрешении отсутствующего столбца «sequence_name» в таблице hibernate_sequences.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3