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

O MySQL gera as tabelas automaticamente?

Comecei o curso usando Mysql ao invés do H2, mas mesmo configurando a propriedade " property name="hibernate.hbm2dll.auto" value="update"/ " no persistence.xml, ainda assim o Mysql não gera a tabela categoria automaticamente nem as colunas correspondentes aos atributos de data e categoria na tabela produto e lança uma exception informando que essas tabelas e colunas não foram encontradas. Depois que crio essas colunas e tabelas no mysql, o código roda normal sem exceções, mas queria saber se essa configuração também se aplica ao mysql ou esse requer uma configuração específica e diferente dessa?

10 respostas
solução!

Oi!

Sim, também funciona com outros bancos.

Obs: confere o nome da propriedade no persistence.xml:

<property name="hibernate.hbm2ddl.auto" value="true"/>

Rodrigo, tentei substituir pelo código que você mandou e ele lançou algumas exceptions:

[PersistenceUnit: loja] Unable to build Hibernate SessionFactory Unrecognized legacy hibernate.hbm2ddl.auto value : true

acho que é 'hbm2dll' ao invés de 'hbm2ddl',

mas quando lanço o código <property name="hibernate.hbm2ddl.auto" value="true"/> ele também lança exceções na hora de criar o banco de dados no Mysql

Opa, mandei errado. O correto:

<property name="hibernate.hbm2ddl.auto" value="update"/>

Rodrigo, testei o novo código e ele ainda lança a exceção de que a tabela não existe:

Caused by: java.sql.SQLSyntaxErrorException: Table 'dataproducts.produto' doesn't exist
...
Exception in thread "main" javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not extract ResultSet
...
Caused by: org.hibernate.exception.SQLGrammarException: could not extract ResultSet
....

Manda aqui um print do seu persistence.xml completo

segue o print, Insira aqui a descrição dessa imagem para ajudar na acessibilidadeé estranho, porque antes de inserir qualquer coisa no terminal ele mostra que o hibernate tentou criar a tabela produto e logo depois deu erro:

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

Hibernate: create table produto (id varchar(255) not null auto_increment, name varchar(255), price decimal(19,2), stock integer not null, primary key (id)) type=MyISAM
set. 15, 2023 9:49:25 AM org.hibernate.tool.schema.internal.ExceptionHandlerLoggedImpl handleException
WARN: GenerationTarget encountered exception accepting command : Error executing DDL "create table produto (id varchar(255) not null auto_increment, name varchar(255), price decimal(19,2), stock integer not null, primary key (id)) type=MyISAM" via JDBC Statement
org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL "create table produto (id varchar(255) not null auto_increment, name varchar(255), price decimal(19,2), stock integer not null, primary key (id)) type=MyISAM" via JDBC Statement

Ah ok, então o problema é o dialeto sendo usado. Altera para:

<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL8Dialect"/>

Continua dando os mesmos erros :/

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

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

Manda aqui agora o código da sua entidade Produto.

Consegui resolver, Rodrigo.

Quando você falou da entidade vi que problema é que eu declarei o Id como String e não como int, depois de declarar como int rodou normal. Muito Obrigado pelo suporte!

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

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software