Em um aplicativo Spring MVC utilizando Hibernate e MySQL, foi observado que a tentativa de persistir subclasses de uma superclasse abstrata, BaseEntity , encontra um erro "A tabela 'docbd.hibernate_sequences' não existe". Este erro surge do uso de GenerationType.TABLE para @GeneratedValue e da falta de suporte de sequência no MySQL.
Como o uso de GenerationType.IDENTITY não é viável devido à superclasse abstrata que gerencia IDs de entidade e GenerationType.SEQUENCE é não é suportado, levanta-se a questão de como resolver este problema. Os trechos de código fornecidos ilustram a superclasse abstrata (BaseEntity), uma subclasse de exemplo (CCD), linguagem específica de domínio (DDL) e código JPQL dentro de um objeto de acesso a dados (DAO).
A estratégia de herança empregada é InheritanceType .TABLE_PER_CLASS, indicando tabelas separadas para cada subclasse. Dada a incapacidade do MySQL de usar sequências, a alternativa de usar GenerationType.TABLE inevitavelmente leva à ausência de uma tabela hibernate_sequences.
O autor da postagem afirma que usar @MappedSuperClass não é uma opção viável, citando a necessidade de relacionamentos ManyToOne intercambiáveis . Por exemplo, AccessLog contém um actor_entity e um target_entity, ambos herdados de BaseEntity. Nesse cenário, usar @MappedSuperClass resultaria em um erro indicando que o AccessLog não pode localizar BaseEntity.
Na tentativa de resolver o problema, uma tabela hibernate_sequences foi criada conforme sugerido. No entanto, surgiu um novo erro: "Coluna desconhecida 'sequence_name' em 'where cláusula.'" Este erro aponta para a consulta SQL iniciada pelo Hibernate: "select sequence_next_hi_value from hibernate_sequences where sequence_name = 'BaseEntity' for update."
Para resolver esse erro específico, o autor da postagem precisa de ajuda para resolver a coluna 'sequence_name' ausente na tabela hibernate_sequences.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3