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

application.properties - dúvidas

Olá, Pesquisando encontrei o arquivo application.properties. Ok, mas ao tentar subir minha aplicação o hibernate não criou as tabelas no banco, somente após eu usar a annotation @EntityScan, porque isso aconteceu?

4 respostas

Oi Diego,

No seu application.properties, tente colocar:

spring.jpa.hibernate.ddl-auto=create

Abraço!

Ok, fiz o que disse porém ele dá o seguinte erro: Unknown database 'livraria' se ela não estiver criada no banco, outra coisa, as tabelas não foram geradas mesmo depois de ter criado a database. Existe uma forma do hibernate criar a database e as tabelas se não houverem no banco?

Nesta abordagem consigo criar as tabelas quando subo a aplicação e mantenho o parâmetro como update para as ddl. Classe ApiLivraria(main)

@SpringBootApplication
@EntityScan(basePackages = {"com.myproject.models"})
public class ApiLivraria {

    public static void main(String[] args){
        SpringApplication.run(ApiLivraria.class, args);
    }

}

resources/application.properties

spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5InnoDBDialect
spring.jpa.show-sql = true
spring.jpa.generate-ddl = true
spring.jpa.hibernate.ddl-auto = update

Quando uso o create não gera as tabelas, pode me dizer porque isso está ocorrendo e qual a boa prática para configuração do JPA?

Outra coisa, quando faço:

spring.jpa.hibernate.ddl-auto=create

Aparece o erro: Hibernate: alter table carrinho drop foreign key

Quando eu faço:

spring.jpa.hibernate.ddl-auto=update

Ele primeiro cria as tabelas depois faz um alter table gerando as constraints:

Hibernate: alter table carrinho add constraint FK59l0wyxchwpr1h1f8autio39p foreign key (livro_id) references livro (id)

O que está acontecendo?

solução!

Consegui criar todo os modelos corretamente, está estável e criado no banco, segue o projeto se tiver curiosidade: https://github.com/DiegoProtec/myproject