Erro Hibernate - MySQL

16 respostas
C

Pessoal, o seguinte erro está acontecendo quando executo minha aplicação Java:

jul 25, 2016 8:00:06 PM org.hibernate.ejb.HibernatePersistence logDeprecation

WARN: HHH015016: Encountered a deprecated javax.persistence.spi.PersistenceProvider [org.hibernate.ejb.HibernatePersistence]; use [org.hibernate.jpa.HibernatePersistenceProvider] instead.

jul 25, 2016 8:00:06 PM org.hibernate.ejb.HibernatePersistence logDeprecation

WARN: HHH015016: Encountered a deprecated javax.persistence.spi.PersistenceProvider [org.hibernate.ejb.HibernatePersistence]; use [org.hibernate.jpa.HibernatePersistenceProvider] instead.

jul 25, 2016 8:00:06 PM org.hibernate.ejb.HibernatePersistence logDeprecation

WARN: HHH015016: Encountered a deprecated javax.persistence.spi.PersistenceProvider [org.hibernate.ejb.HibernatePersistence]; use [org.hibernate.jpa.HibernatePersistenceProvider] instead.

jul 25, 2016 8:00:07 PM org.hibernate.jpa.internal.util.LogHelper logPersistenceUnitInformation

INFO: HHH000204: Processing PersistenceUnitInfo [

name: hxbr

]

jul 25, 2016 8:00:07 PM org.hibernate.Version logVersion

INFO: HHH000412: Hibernate Core {4.3.8.Final}

jul 25, 2016 8:00:07 PM org.hibernate.cfg.Environment 

INFO: HHH000206: hibernate.properties not found

jul 25, 2016 8:00:07 PM org.hibernate.cfg.Environment buildBytecodeProvider

INFO: HHH000021: Bytecode provider name : javassist

jul 25, 2016 8:00:08 PM org.hibernate.annotations.common.reflection.java.JavaReflectionManager 

INFO: HCANN000001: Hibernate Commons Annotations {4.0.5.Final}

jul 25, 2016 8:00:08 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure

WARN: HHH000402: Using Hibernate built-in connection pool (not for production use!)

jul 25, 2016 8:00:08 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator

INFO: HHH000401: using driver [com.mysql.jdbc.Driver] at URL [jdbc:mysql://Localhost:3306/Offset/CriarTabelas]

jul 25, 2016 8:00:08 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator

INFO: HHH000046: Connection properties: {user=root, password=****}

jul 25, 2016 8:00:08 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator

INFO: HHH000006: Autocommit mode: false

jul 25, 2016 8:00:08 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure

INFO: HHH000115: Hibernate connection pool size: 20 (min=1)

Exception in thread main javax.persistence.PersistenceException: Unable to build entity manager factory

at org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:83)

at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:54)

at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:55)

at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:39)

at br.gov.mdic.servlet.CriaTabelas.main(CriaTabelas.java:13)

Caused by: org.hibernate.exception.JDBCConnectionException: Error calling Driver#connect

at org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:132)

at org.hibernate.engine.jdbc.connections.internal.BasicConnectionCreator$1$1.convert(BasicConnectionCreator.java:118)

at org.hibernate.engine.jdbc.connections.internal.BasicConnectionCreator.convertSqlException(BasicConnectionCreator.java:140)

at org.hibernate.engine.jdbc.connections.internal.DriverConnectionCreator.makeConnection(DriverConnectionCreator.java:58)

at org.hibernate.engine.jdbc.connections.internal.BasicConnectionCreator.createConnection(BasicConnectionCreator.java:75)

at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl.configure(DriverManagerConnectionProviderImpl.java:106)

at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:111)

at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:234)

at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:206)

at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.buildJdbcConnectionAccess(JdbcServicesImpl.java:260)

at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:94)

at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:111)

at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:234)

at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:206)

at org.hibernate.cfg.Configuration.buildTypeRegistrations(Configuration.java:1887)

at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1845)

at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.java:852)

at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.java:845)

at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.withTccl(ClassLoaderServiceImpl.java:398)

at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:844)

at org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:75)

 4 more

Caused by: 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.
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
	at com.mysql.jdbc.Util.handleNewInstance(Util.java:377)
	at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1036)
	at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:338)
	at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2232)
	at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2265)
	at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2064)
	at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:790)
	at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:44)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
	at com.mysql.jdbc.Util.handleNewInstance(Util.java:377)
	at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:395)
	at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:325)
	at org.hibernate.engine.jdbc.connections.internal.DriverConnectionCreator.makeConnection(DriverConnectionCreator.java:55)
	... 21 more
Caused by: java.net.ConnectException: Connection refused
	at java.net.PlainSocketImpl.socketConnect(Native Method)
	at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
	at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
	at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
	at java.net.Socket.connect(Socket.java:589)
	at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:213)
	at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:297)
	... 34 more

16 Respostas

A

o usuário e senha do banco estão corretos no hibernate.cfg.xml?
Aparentemente seu problema está na hora de criar o entityManager, manda o código da classe com essa reponsabilidade

C

A classe é a seguinte:

package br.gov.mdic.servlet;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet; 

@WebServlet("/criatabelas")
public class CriaTabelas extends HttpServlet  {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	public static void main ( String [] args ) {
		EntityManagerFactory emf = Persistence.createEntityManagerFactory("HXBR");
        EntityManager em = emf.createEntityManager();

        Empresa empresa = new Empresa();
        empresa.setNomeFantasia("Helibras Helicopteros do Brasil");
        empresa.setWebsite("www.helibras.com.br");

        em.getTransaction().begin();
        em.persist(empresa);
        em.getTransaction().commit();

        System.out.println("Empresa salva com sucesso!");
}
}
A

ok… esqueci de pedir, manda a classe entidade e o persistence.xml

C

OK. Abaixo a entidade:

import java.io.Serializable;
import java.util.Collection;
import java.util.Date;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

@Entity
public class Empresa implements Serializable {
	
	private static final long serialVersionUID = 1L;
	
	@Id
	@GeneratedValue
	private Long id;
	private String RazaoSocial;
	private String NomeFantasia;
	private String Website;
	private String CNPJ;
	
	@OneToMany
	public Collection<Funcionario> Responsavel;
	
	@OneToMany
	private Collection<Endereco> Matriz;
	
	@Temporal(TemporalType.DATE)
	private Date Fundacao;
	private String Inscricao;


	
	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}
	
	public String getRazaoSocial(){
		return RazaoSocial;
	}
	
	public void setRazaoSocial(String RazaoSocial){
		this.RazaoSocial = RazaoSocial;
	}
	
	public String getNomefantasia(){
		return NomeFantasia;
	}
	
	public void setNomeFantasia(String NomeFantasia){
		this.NomeFantasia = NomeFantasia;
	}
	
	public String getWebsite(){
		return Website;
	}
	
	public void setWebsite(String Website){
		this.Website = Website;
	}
	
	public String getCNPJ(){
		return CNPJ;
	}
	
	public void setCNPJ(String CNPJ){
		this.CNPJ = CNPJ;
	}
	
	public Funcionario getResponsavel(){
		return (Funcionario) Responsavel;
	}
	
	@SuppressWarnings("unchecked")
	public void setResponsavel(Funcionario Responsavel){
		this.Responsavel = (Collection<Funcionario>) Responsavel;
	}
	
	public Endereco getMatriz(){
		return (Endereco) Matriz;
	}
	
	@SuppressWarnings("unchecked")
	public void setMatriz(Endereco Matriz){
		this.Matriz= (Collection<Endereco>) Matriz;
	}
	
	public Date getFundacao(){
		return Fundacao;
	}
	
	public void setFundacao(Date Fundacao){
		this.Fundacao = Fundacao;
	}
	
	public String getInscricao(){
		return Inscricao;
	}
	
	public void setInscricao(String Inscricao){
		this.Inscricao = Inscricao;
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((CNPJ == null) ? 0 : CNPJ.hashCode());
		result = prime * result + ((Fundacao == null) ? 0 : Fundacao.hashCode());
		result = prime * result + ((Inscricao == null) ? 0 : Inscricao.hashCode());
		result = prime * result + ((Matriz == null) ? 0 : Matriz.hashCode());
		result = prime * result + ((NomeFantasia == null) ? 0 : NomeFantasia.hashCode());
		result = prime * result + ((RazaoSocial == null) ? 0 : RazaoSocial.hashCode());
		result = prime * result + ((Responsavel == null) ? 0 : Responsavel.hashCode());
		result = prime * result + ((Website == null) ? 0 : Website.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Empresa other = (Empresa) obj;
		if (CNPJ == null) {
			if (other.CNPJ != null)
				return false;
		} else if (!CNPJ.equals(other.CNPJ))
			return false;
		if (Fundacao == null) {
			if (other.Fundacao != null)
				return false;
		} else if (!Fundacao.equals(other.Fundacao))
			return false;
		if (Inscricao == null) {
			if (other.Inscricao != null)
				return false;
		} else if (!Inscricao.equals(other.Inscricao))
			return false;
		if (Matriz == null) {
			if (other.Matriz != null)
				return false;
		} else if (!Matriz.equals(other.Matriz))
			return false;
		if (NomeFantasia == null) {
			if (other.NomeFantasia != null)
				return false;
		} else if (!NomeFantasia.equals(other.NomeFantasia))
			return false;
		if (RazaoSocial == null) {
			if (other.RazaoSocial != null)
				return false;
		} else if (!RazaoSocial.equals(other.RazaoSocial))
			return false;
		if (Responsavel == null) {
			if (other.Responsavel != null)
				return false;
		} else if (!Responsavel.equals(other.Responsavel))
			return false;
		if (Website == null) {
			if (other.Website != null)
				return false;
		} else if (!Website.equals(other.Website))
			return false;
		return true;
	}

	
}
C

Em seguida o Persistence:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0"
    xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">

    <persistence-unit name="HXBR" transaction-type="RESOURCE_LOCAL">
    
    <class>br.gov.mdic.servlet.Empresa</class>

        <properties>
            <property name="javax.persistence.jdbc.url" value="jdbc:mysql://Localhost:3306/Offset/CriarTabelas"/>
            <property name="javax.persistence.jdbc.user" value="root"/>
            <property name="javax.persistence.jdbc.password" value="password"/>
            <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>

            <!-- validate | update | create | create-drop -->
            <property name="hibernate.hbm2ddl.auto" value="create"/>
            <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>
        </properties>

    </persistence-unit>

</persistence>
A

Só por desencargo:

É isso mesmo?!

Essa é realmente sua senha do banco de dados? (pergunto pq as vezes vc pega o persistence pronto, e esquece de alterar alguma coisa (já fiz isso)).

C

Olá,

Não reconheço a forma como você está utilizando o value da property “javax.persistence.jdbc.url”.

Geralmente é:

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

Veja:

https://dev.mysql.com/doc/connector-j/5.1/en/connector-j-reference-configuration-properties.html

C

Olá, pessoal! Obrigado pelas colaborações.

Eu só conseguirei fazer as alterações sugeridas à noite, quando estarei em casa de posse do meu computador.

Provavelmente, a senha do banco é outra. Como eu faço pra descobrir qual é? Eu estou usando o Apache Tomcat com MySQL.

Obrigado!

A

Segue esse tutorial (não testei, mas vi esse mesmo tutorial em linux em vários sites) acredito que vai funcionar.

C

Pessoal, na verdade, eu não estou conseguindo conectar o Tomcat ao MySql. Estou usando o ambiente Eclipse Neon.

Vocês sabem como fazer esse procedimento?

I

estão no mesmos servidor o tomcat, e o banco ?
Em tese vc tem que ter acesso ao ip só

C

Eu estou tentanto configurar o MySQL no Tomcat no ambiente Eclipse, mas não consegui ainda. você sabe qual seria o procedimento?

I

Eles estão instalados localmente na sua máquina ?
Sobe o tomcat, testa o mesmo.
E com o banco a mesma coisa.

C

Pessoal, resolvi o problema inicial. na verdade, o servidor Mysql não estava rodando.

Agora apareceu um novo erro que, acredito, está relacionado com o persistence ou com a classe de criação das tabeles. segue:

jul 27, 2016 1:37:45 PM org.hibernate.ejb.HibernatePersistence logDeprecation
WARN: HHH015016: Encountered a deprecated javax.persistence.spi.PersistenceProvider [org.hibernate.ejb.HibernatePersistence]; use [org.hibernate.jpa.HibernatePersistenceProvider] instead.
jul 27, 2016 1:37:45 PM org.hibernate.ejb.HibernatePersistence logDeprecation
WARN: HHH015016: Encountered a deprecated javax.persistence.spi.PersistenceProvider [org.hibernate.ejb.HibernatePersistence]; use [org.hibernate.jpa.HibernatePersistenceProvider] instead.
jul 27, 2016 1:37:45 PM org.hibernate.ejb.HibernatePersistence logDeprecation
WARN: HHH015016: Encountered a deprecated javax.persistence.spi.PersistenceProvider [org.hibernate.ejb.HibernatePersistence]; use [org.hibernate.jpa.HibernatePersistenceProvider] instead.
Exception in thread "main" javax.persistence.PersistenceException: No Persistence provider for EntityManager named leo
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:61)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:39)
	at br.gov.mdic.servlet.CriaTabelas.main(CriaTabelas.java:18)
A

lá em cima vc postou o persistence.xml com o nome do persistence unit como ‘HXBR’, o tomcat está procurando um chamado ‘leo’ e não encontra.

C

Obrigado. Problema resolvido!

Criado 25 de julho de 2016
Ultima resposta 28 de jul. de 2016
Respostas 16
Participantes 4