Solucionado (ver solução)
Solucionado
(ver solução)
8
respostas

[Dúvida] Hibernate criando tabelas com colunas "antigas" e ignora meu banco de dados.

Olá a todos, tudo belesminha? Estou com um problema aqui, alguém pode me dar uma força?

Eu renomeei quase todo o meu banco de dados e o Hibernate ainda fica criando a versão anterior que eu havia utilizado. Como que eu apago esse "cache"?

"Hibernate: drop table if exists tb_owners

Hibernate: create table tb_owners (id_tb_owner bigint not null auto_increment, activie bit not null, cpf varchar(255), created_at datetime(6), fathers_full_name varchar(255), first_name varchar(255), last_name varchar(255), manager bit not null, marital_status varchar(255), mothers_full_name varchar(255), nationality varchar(255), naturalness varchar(255), occupation varchar(255), passport varchar(255), rg varchar(255), rne varchar(255), schooling varchar(255), updated_at datetime(6), uuid BINARY(16), primary key (id_tb_owner)) engine=InnoDB" - Versão antiga

https://github.com/VagnerNicolosi/resipay.git

8 respostas

como que esta essa propriedade no seu properties?

quarkus.hibernate-orm.database.generation=update

Essa propriedade nem estava no meu arquivo application.properties... Atualmente ele está assim:

spring.flyway.baselineOnMigrate=true spring.devtools.add-properties=false spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/dbResipay spring.datasource.username=root spring.datasource.password=1234 spring.h2.console.enabled=true spring.h2.console.path=/h2-console spring.jpa.hibernate.ddl-auto=create spring.jpa.open-in-view=true spring.jpa.show-sql=true spring.jpa.database-platform=org.hibernate.dialect.MySQLDialect spring.jpa.properties.hibernate.dialect.storage_engine=innodb spring.data.jpa.repositories.enabled=true

Espera, é o flyway que está gerenciando seu banco? Ou o proprio hibernate?

Oi!

Se você vai utilizar o Flyway para gerenciar o banco de dados, então deve apagar essa propriedade do seu application.properties, para que o Hibernate não mais crie as tabelas automaticamente, pois será feito pelo Flyway:

spring.jpa.hibernate.ddl-auto=create

Fiz a mudança mas não adiantou. Não cria a tabela pela migration e quando disparo a requisição ele trás as tabelas antigas.

Como o hibernate já tinha criado tudo antes, você vai precisar apagar.

A sugestão e apagar o banco e criar novamente, para que assim o Flyway execute os scripts na próxima vez que a aplicação for inicializada:

drop database dbResipay;
create database dbResipay;

Eu já fiz isso de todos os jeitos umas mil vezes.. Não tem nenhum comando pro hibernate "esquecer" o que ele já fez?

Criei um projeto novo, e deu o mesmo erro. Como isso é possível?

solução!

Eu baixei o seu projeto do GitHub, testei aqui e funcionou.

A única coisa que fiz foi alterar o application.properties para ficar assim:

spring.datasource.url=jdbc:mysql://localhost:3306/dbResipay?createDatabaseIfNotExist=true
spring.datasource.username=root
spring.datasource.password=1234

spring.jpa.show-sql=true

Antes de rodar o projeto você só precisa dropar o banco: drop database dbResipay;

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Insira aqui a descrição dessa imagem para ajudar na acessibilidade