Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

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