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

Could not open JPA EntityManager for transaction;

Bom dia pessoal, tudo bem ??

eu estou com esse erro, alguém conseguiria me ajudar ? não consigo achar a solução, desde já agradeço!]

*o erro GRAVE: Servlet.service() for servlet [dispatcher] in context with path [/casadocodigo] threw exception [Request processing failed; nested exception is org.springframework.transaction.CannotCreateTransactionException: Could not open JPA EntityManager for transaction; nested exception is javax.persistence.PersistenceException: org.hibernate.exception.JDBCConnectionException: Could not open connection] with root cause

6 respostas

Olá Adriely, tudo bem com você?

Você poderia dar a stack completa de erro que está acontecendo, por favor?

Além disso, qual versão do mysql você está utilizando?

As vezes, quando estamos utilizando a versão 8, pode ser necessário mudar a versão do connector:

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.21</version>
        </dependency>

E dentro das propriedades:

 props.setProperty("hibernate.dialect", "org.hibernate.dialect.MySQL8Dialect");

Dessa maneira provavelmente voltará a funcionar corretamente :)

Mas caso não funcione, a stack pode ajudar bastante :)

Abraços e Bons Estudos!

Boa tarde Geovani,

então eu mudei a versão por que eu realmente estava usando a 8, mas assim que mudei o

erro no meu console é esse : GRAVE: Servlet /casadocodigo threw load() exception org.hibernate.boot.registry.selector.spi.StrategySelectionException: Unable to resolve name [org.hibernate.dialect.MySQL8Dialect] as strategy [org.hibernate.dialect.Dialect]

e esse: GRAVE: StandardWrapper.Throwable org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class br.com.casadocodigo.loja.conf.JPAConfiguration: Invocation of init method failed; nested exception is org.hibernate.boot.registry.selector.spi.StrategySelectionException: Unable to resolve name [org.hibernate.dialect.MySQL8Dialect] as strategy [org.hibernate.dialect.Dialect]

e no meu comand aparece isso:

ERROR 2003 (HY000): Can't connect to MySql server on "localhost" (10061)

desde já agredeço pela atenção Geovani

abraços.

Olá Adriely, tudo certo?

Eu rodei um mysql-8 no Docker para simular seus problemas, e não precisamos usar esse dialeto com a versão do projeto, peço perdão

Para conseguir funcionar eu voltei o dialeto para a versão 5:

props.setProperty("hibernate.dialect", "org.hibernate.dialect.MySQL5Dialect");

Mas uma coisa necessária na versão 8 é mudar o driver para:

dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");

Dessa forma eu passei por todos erros que você teve, mas após essas 2 configurações consegui o resultado esperado:

Produto [titulo=teste, descricao=teste, paginas=2323]
Hibernate: insert into Produto (descricao, paginas, titulo) values (?, ?, ?)

Pode Testar?

Abraços!

Oi Giovani, bom dia

eu fiz as mudanças mas acabei voltando ao meu primeiro erro do

HTTP Status 500 - Request processing failed; nested exception is org.springframework.transaction.CannotCreateTransactionException: Could not open JPA EntityManager for transaction; nested exception is javax.persistence.PersistenceException: org.hibernate.exception.JDBCConnectionException: Could not open connection

e no meu prompt comand na hora de eu logar me aparece esse erro:

ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061)

não sei o que acontece, será que conseguria entrar em contato comigo, para estarmos verifcando ?

desde já agradeço

abraços.

Olá Adriely, tudo bem?

Eu dei uma pesquisada e pelo que percebi, o problema está provavelmente com o seu serviço do mysql, ele não está iniciado

Para isso você vai precisar navegar até a pasta bin do mysql, por exemplo:

C:\Program Files (x86)\MySQL\bin >

** Aqui no caso seria o caminho para o seu computador

E executar o seguinte comando:

mysqld -u root -p

Se você achar mais fácil um tutorial, esse daqui utiliza de uma outra forma para iniciar, mas que também dará certo:

Uma outra coisa que pode ajudar, é reinstalar o mysql para que ele comece a iniciar junto com o computador:

Aqui na Alura temos um tutorial:

Acredito que dessas 2 formas de fato irá funcionar, pois realmente o problema está sendo com o seu serviço do Mysql, o fato de você não conseguir se conectar com o prompt impede também que o Spring consiga fazer a conexão

No momento eu estou sem algum equipamento para conseguir entrar em contato de forma efetiva, mas acredito que seguindo um desses 2 passos irá de fato solucionar o problema, pois encontramos a causa :)

Abraços e Bons Estudos!

solução!

Boa tarde Geovani,

tive que desinstalar o MySQL e instalar novamente, adicionei as configurações que você me disse e funcionou perfeitamente!

muito obrigado pela ajuda e pela paciência!

Abraços!