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

Problema na conexão com Banco

Na hora da execução da classe TesteJPA não está tendo comunicação com o banco de dados e o erro no console aparece o seguinte erro:

Executado em: 0.0s
nov 10, 2014 4:39:45 PM org.hibernate.annotations.common.Version <clinit>
INFO: HCANN000001: Hibernate Commons Annotations {4.0.1.Final}
nov 10, 2014 4:39:45 PM org.hibernate.Version logVersion
INFO: HHH000412: Hibernate Core {4.2.0.Final}
nov 10, 2014 4:39:45 PM org.hibernate.cfg.Environment <clinit>
INFO: HHH000206: hibernate.properties not found
nov 10, 2014 4:39:45 PM org.hibernate.cfg.Environment buildBytecodeProvider
INFO: HHH000021: Bytecode provider name : javassist
nov 10, 2014 4:39:45 PM org.hibernate.ejb.Ejb3Configuration configure
INFO: HHH000318: Could not find any META-INF/persistence.xml file in the classpath
Exception in thread "main" javax.persistence.PersistenceException: No Persistence provider for EntityManager named financas
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:69)
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:47)
    at br.com.caelum.financas.teste.TesteJPA.main(TesteJPA.java:25)
18 respostas
solução!

Jefferson, o arquivo persistence.xml está presente no diretório META-INF do projeto? Verifique se você tem acesso a essa pasta, pois problemas de permissionamento podem atrapalhar na hora da compilação e execução. O Hibernate está reclamando que não consegue encontrar esse arquivo, e consequentemente ele não consegue resolver as referências de persistência das entidades.

Geralmente isso quer dizer que ele não conseguiu encontrar o arquivo META-INF/persistence.xml no classpath.

Uma vez eu tinha escrito o nome do arquivo "MATA-INF" e não encontrada também, é muito importante que o arquivo esteja como "META-INF", pois é esse arquivo que o hibernate procura, as vezes o problema é só uma questão de arquivo com nome errado, verifica se é isso...

verifique se você criou o banco com o nome informado no arquivo persistence.xml por exemplo para : criou o banco financas ....

Certifique-se que a versão das libs é do JPA 2.0, dá um erro semelhante caso você esteja usando a do JPA 2.1;

Jonathan.barros só adicionaria uma informação. O persistence.xml deve estar na pasta META-INF que por sua vez deve estar dentro da pasta SRC. Depois dê um retorno para sabermos se deu certo. Ok? Pre-requisitos a serem observados: Lib´s devem estar no classpath do projeto; O nome da persistence-unit deve ser financas dentro do persistence.xml O arquivo deve estar na pasta correta de acordo com a especificação. O banco de dados deve estar criado no mysql; O mysql deve estar instalado e rodando.

Jonathan.Barros, conforme alguns colegas acima escreveram, verifique se existe a pasta "META-INF" com o arquivo persistence.xml incluso no mesmo, caso não crie. Se você estiver utilizando o eclipse LUNA provavelmente ele não permitirá que você crie a pasta pois utiliza o caracter "-", mas, basta você entrar na pasta do projeto e dentro da pasta "src" e criar a pasta "META-INF" e incluir o arquivo persistence.xml na pasta criada.

Basta criar a pasta "META-INF" e baixar um modelo de arquivo persistence.xml (que está disponível nas primeiras lições ) e colocar nessa pasta. Em seguida deve verificar as configurações que estão dentro desse arquivo para que ele consiga conectar no seu banco de dados local ou remoto.

Boa Noite Jonathan.Barros, Seu problema é com o persistence.xml, primeiramente analise seu projeto novamente e verifique se seu persistence.xml está dentro da pasta "META-INF" sendo seu diretório src/META-INF, analise o arquivo persistence.xlm verifique se o usuario e senha estão de acordo ao seu banco de dados e por fim analise se você possui um banco de dados com nome "financas".

Download do persistence.xml

https://s3.amazonaws.com/caelum-online-public/JPA/persistence.xml

Eu passei pelo mesmo problema ao fazer o exercício da aula. O problema foi q na hora que criei a pasta META-INF eu cliquei com o botão direito em cima da pasta "src" e cliquei em new "Source folder". Nesse caso, o Eclipse criou a pasta fora do src e ficou tudo errado... tive que apagar no build path e várias coisas, foi xarope pra arrumar.

Depois eu fiz que apaguei td q ficou errado, fiz o seguinte. Cliquei com o botão direito em cima da pasta "src", cliquei em new -> other. Daí escolhi "Folder". Coloquei o nome "META-INF", coloquei o xml dentro e tudo funcionou. Nesse caso o Eclipse realmente criou a pasta no lugar certo. Antes ele tinha colocado fora do "src"...

Primeiro verifique se o nome que você esta passando no parâmetro createEntityManagerFactory é o nome que está no seu persistence-unit que fica no arquivo persistence.xml

Segundo você deve criar antes uma database (create database financas) com o nome que está definido no seu arquivo persistence.xml ... jdbc:mysql://localhost/financas" />

Jonathan Barros , você esta com problemas no persistence xml, porque não está sendo possivél criar a fabrica de conexão, provavelmente o persistence.xml não no class path do projeto ou nome da persistence-unit esta incorreto.

Me avise se deu certo por favor !

O Persistence nao esta na pasta correta!

Muitas pessoas falaram se o arquivo persistence.xml, além disso, verifique se dentro do persistence esta propriedade está com o nome correto:

<persistence-unit name="financas">

Verifique se não há espaços ou algum caracter especial, exemplo: "@financas "

Amigo, tive o mesmo problema e também acreditava ser algo em relação ao meu persistence, porem depois de muito apanhar percebi que faltava o jar "hibernate-entitymanager-4.2.0.Final.jar".

Então fica a dica veja se todos os jars estão corretos e se este esta incluído no seu projeto ou então faça o que os colegas acima disseram veja se persistence.xml esta na pasta META-INF dentro da pasta src ok!

Aguardamos noticia!

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