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

Dúvida no Ex. 7 da Aula 2 - Configuração e inicialização do JPA

Ah pessoal... até li todos os problemas que os colegas colocaram aí em cima, mas nenhum deles me ajudou a resolver o que está rolando aqui...

Segue a mensagem de erro:

jan 20, 2016 1:23:32 PM org.hibernate.annotations.common.Version <clinit>
INFO: HCANN000001: Hibernate Commons Annotations {4.0.1.Final}
jan 20, 2016 1:23:32 PM org.hibernate.Version logVersion
INFO: HHH000412: Hibernate Core {4.2.0.Final}
jan 20, 2016 1:23:32 PM org.hibernate.cfg.Environment <clinit>
INFO: HHH000206: hibernate.properties not found
jan 20, 2016 1:23:32 PM org.hibernate.cfg.Environment buildBytecodeProvider
INFO: HHH000021: Bytecode provider name : javassist
jan 20, 2016 1:23:32 PM org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
INFO: HHH000402: Using Hibernate built-in connection pool (not for production use!)
jan 20, 2016 1:23:32 PM org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
INFO: HHH000115: Hibernate connection pool size: 20
jan 20, 2016 1:23:32 PM org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
INFO: HHH000006: Autocommit mode: true
jan 20, 2016 1:23:32 PM org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
INFO: HHH000401: using driver [com.mysql.jdbc.Driver] at URL [jdbc:mysql://localhost:8081/financas]
jan 20, 2016 1:23:32 PM org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
INFO: HHH000046: Connection properties: {user=root, autocommit=true, release_mode=auto}
jan 20, 2016 1:28:33 PM org.hibernate.engine.jdbc.internal.JdbcServicesImpl configure
WARN: HHH000342: Could not obtain connection to query metadata : Communications link failure

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
jan 20, 2016 1:28:33 PM org.hibernate.dialect.Dialect <init>
INFO: HHH000400: Using dialect: org.hibernate.dialect.MySQL5InnoDBDialect
jan 20, 2016 1:28:33 PM org.hibernate.engine.jdbc.internal.LobCreatorBuilder useContextualLobCreation
INFO: HHH000422: Disabling contextual LOB creation as connection was null
jan 20, 2016 1:28:33 PM org.hibernate.engine.transaction.internal.TransactionFactoryInitiator initiateService
INFO: HHH000268: Transaction strategy: org.hibernate.engine.transaction.internal.jdbc.JdbcTransactionFactory
jan 20, 2016 1:28:33 PM org.hibernate.hql.internal.ast.ASTQueryTranslatorFactory <init>
INFO: HHH000397: Using ASTQueryTranslatorFactory
jan 20, 2016 1:28:33 PM org.hibernate.tool.hbm2ddl.SchemaUpdate execute
INFO: HHH000228: Running hbm2ddl schema update
jan 20, 2016 1:28:33 PM org.hibernate.tool.hbm2ddl.SchemaUpdate execute
INFO: HHH000102: Fetching database metadata
jan 20, 2016 1:33:34 PM org.hibernate.tool.hbm2ddl.SchemaUpdate execute
ERROR: HHH000319: Could not get database metadata
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.

Já verifiquei que tenho a pasta META-INF dentro da src e que lá dentro está o persistence.xml como segue:

<!--  unidade de persistencia com o nome financas  -->
<persistence-unit name="financas">
<!--  Implementação do JPA, no nosso caso Hibernate  -->
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<!--  Aqui são listadas todas as entidades  -->
<class>br.com.caelum.financas.modelo.Conta</class>
<properties>
<!--  Propriedades JDBC  -->
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:8081/financas"/>
<property name="javax.persistence.jdbc.user" value="root"/>
<property name="javax.persistence.jdbc.password" value=""/>
<!--  Configurações específicas do Hibernate  -->
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect"/>
<property name="hibernate.hbm2ddl.auto" value="update"/>
<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.format_sql" value="true"/>
</properties>
</persistence-unit>
</persistence>

Por causa de outros softwares. alterei o acesso ao MySql para a porta 8081, que é onde ele está acessível pela url: http://localhost:8081/phpmyadmin Lá, está criado o banco financas.

Alguém tem alguma ideia para me ajudar? Já fiz e refiz todo o exercício umas 3 vezes!

Obrigado!

9 respostas

Ola, Marcos Luciano Peres !

Vamos fazer um passo a passo:

1 - Verifique se seu mySql esta instalado e rodando certinho; 2 - Verifique se criou o database: financas; 3 - Verifique se o nome do database: financas, estacertinho no persistence.xml; 4 - Verifique user e password do mysql esta certinho no seu seu persistence.xml.

Oi Cristiano, obrigado pela sua disponibilidade. 1. Sim, rodando e ok. 2. Sim, criado. 3. Criado como financas e certinho no persistence.xml 4. User root e pasword em branco.

Arquivos persistence.xml criado dentro da pasta META-INF e essa, criada dentro da pasta bin.

É como se a aplicação não enxergasse as informações do persistence.xml

Ola, Marcos Luciano Peres !

Seu persistence.xml está em qual pasta ?

Faz um print da estrutura do seu projetinho, vamos dar uma olhada nela!

Abraço!

Olá! Verifiquem se conseguem visualizar no seguinte link: Print Screen do Projeto

Obrigado pela ajuda!

Ola, Marcos Luciano Peres !

Seu META-INF precisa estar dentro de resources.

Ex.:

src -> resources -> META-INF -> persistence.xml

1º - Crie: resources dentro da src ;

2º - Mova a META-INF para dentro da resources .

e teste ! :o)

Abraços!

Ih rapaz... agora não encontrou nada mesmo:

jan 26, 2016 2:18:06 PM org.hibernate.annotations.common.Version <clinit>
INFO: HCANN000001: Hibernate Commons Annotations {4.0.1.Final}
jan 26, 2016 2:18:06 PM org.hibernate.Version logVersion
INFO: HHH000412: Hibernate Core {4.2.0.Final}
jan 26, 2016 2:18:06 PM org.hibernate.cfg.Environment <clinit>
INFO: HHH000206: hibernate.properties not found
jan 26, 2016 2:18:06 PM org.hibernate.cfg.Environment buildBytecodeProvider
INFO: HHH000021: Bytecode provider name : javassist
jan 26, 2016 2:18:06 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:19)

É essa estrutura mesmo que deve ser criada? src->resources->META-INF->persistence.xml ?

Obrigado!

solução!

Ola, Marcos Luciano Peres !

Faça uma coisa, volte a estrutura de pastas como estava anteriormente.

Altere sua no sei persistence.xml a porta do seu mySql:

Vamos alterar a sua porta de : 8081 - para : 3306

Altere DE:

<!--  unidade de persistencia com o nome financas  -->
<persistence-unit name="financas">
<!--  Implementação do JPA, no nosso caso Hibernate  -->
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<!--  Aqui são listadas todas as entidades  -->
<class>br.com.caelum.financas.modelo.Conta</class>
<properties>
<!--  Propriedades JDBC  -->
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:8081/financas"/>
<property name="javax.persistence.jdbc.user" value="root"/>
<property name="javax.persistence.jdbc.password" value=""/>
<!--  Configurações específicas do Hibernate  -->
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect"/>
<property name="hibernate.hbm2ddl.auto" value="update"/>
<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.format_sql" value="true"/>
</properties>
</persistence-unit>
</persistence>

Por causa de outros softwares. alterei o acesso ao MySql para a porta

PARA:

<!--  unidade de persistencia com o nome financas  -->
<persistence-unit name="financas">
<!--  Implementação do JPA, no nosso caso Hibernate  -->
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<!--  Aqui são listadas todas as entidades  -->
<class>br.com.caelum.financas.modelo.Conta</class>
<properties>
<!--  Propriedades JDBC  -->
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/financas"/>
<property name="javax.persistence.jdbc.user" value="root"/>
<property name="javax.persistence.jdbc.password" value=""/>
<!--  Configurações específicas do Hibernate  -->
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect"/>
<property name="hibernate.hbm2ddl.auto" value="update"/>
<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.format_sql" value="true"/>
</properties>
</persistence-unit>
</persistence>

Por causa de outros softwares. alterei o acesso ao MySql para a porta

Teste assim !

Cristiano.... você estava certo... era a porta!

E funcionou também sem informar o número dela, assim:

<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost/financas"/>

Acho que botei na cabeça que tinha que colocar a porta 8081 por estar acessando por essa porta o ambiente do PhpMyAdmin, sei lá... quando você me passou a mudança na porta, caiu a ficha.

Muito obrigado pela ajuda,meu amigo! Agora posso prosseguir o curso!

Abraço!

Ola, Marcos Luciano Peres !

Que bom, Maravilha!

Somente para explicar porque pedi para você alterar a estrutura do seu projeto.

Na verdade foi falha minha, não me atentei que esse projeto estava sem o maven.

O jeito que você criou estava perfeita a estrutura!

Legal que agora esta tudo funcionando.

Abraço!