Olá, pessoal! Estou começando na programação Java e estou tendo um problema na execução de um código que utiliza o JPA. Já vi todas as orientações e dicas a respeito do assunto, o que parece uma coisa simples, entretanto meu código não funciona, e aparece as seguintes mensagens de erro:
_mar 19, 2016 11:33:25 AM org.hibernate.jpa.internal.util.LogHelper logPersistenceUnitInformation_
_ INFO: HHH000204: Processing PersistenceUnitInfo [_
_ name: default_
_ ...]_
_ mar 19, 2016 11:33:25 AM org.hibernate.Version logVersion_
_ INFO: HHH000412: Hibernate Core {5.1.0.Final}_
_ mar 19, 2016 11:33:25 AM org.hibernate.cfg.Environment <clinit>_
_ INFO: HHH000206: hibernate.properties not found_
_ mar 19, 2016 11:33:25 AM org.hibernate.cfg.Environment buildBytecodeProvider_
_ INFO: HHH000021: Bytecode provider name : javassist_
_ mar 19, 2016 11:33:25 AM org.hibernate.annotations.common.reflection.java.JavaReflectionManager <clinit>_
_ INFO: HCANN000001: Hibernate Commons Annotations {5.0.1.Final}_
_ mar 19, 2016 11:33:25 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure_
_ WARN: HHH10001002: Using Hibernate built-in connection pool (not for production use!)_
_ Exception in thread "main" javax.persistence.PersistenceException: Unable to build entity manager factory_
_ at org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:66)_
_ at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:55)_
_ at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:39)_
_ at PersistidorDeAutomovel.main(PersistidorDeAutomovel.java:11)_
_ Caused by: org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]_
_ at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:244)_
_ at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:208)_
_ at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:189)_
_ at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:51)_
_ at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:94)_
_ at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:217)_
_ at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:189)_
_ at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.handleTypes(MetadataBuildingProcess.java:352)_
_ at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:111)_
_ at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.metadata(EntityManagerFactoryBuilderImpl.java:848)_
_ at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:876)_
_ at org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:58)_
_ ... 3 more_
_ Caused by: org.hibernate.boot.registry.classloading.spi.ClassLoadingException: Unable to load class [com.mysql.jdbc.Driver]_
_ at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.classForName(ClassLoaderServiceImpl.java:229)_
_ at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl.loadDriverIfPossible(DriverManagerConnectionProviderImpl.java:161)_
_ at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl.buildCreator(DriverManagerConnectionProviderImpl.java:117)_
_ at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl.configure(DriverManagerConnectionProviderImpl.java:73)_
_ at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:94)_
_ at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:217)_
_ at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:189)_
_ at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.buildJdbcConnectionAccess(JdbcEnvironmentInitiator.java:145)_
_ at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:66)_
_ at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:35)_
_ at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.initiateService(StandardServiceRegistryImpl.java:88)_
_ at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:234)_
_ ... 14 more_
_ Caused by: java.lang.ClassNotFoundException: Could not load requested class : com.mysql.jdbc.Driver_
_ at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl$AggregatedClassLoader.findClass(ClassLoaderServiceImpl.java:217)_
_ at java.lang.ClassLoader.loadClass(Unknown Source)_
_ at java.lang.ClassLoader.loadClass(Unknown Source)_
_ at java.lang.Class.forName0(Native Method)_
_ at java.lang.Class.forName(Unknown Source)_
_ at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.classForName(ClassLoaderServiceImpl.java:226)_
_ ... 25 more_
Estou usando a plataforma o Eclipse Java EE IDE for Web Developers - versão Mars 2 - realease 4.5.2;o Hibernate 5.1.0; o jdk1.8.0_73; e o MySQL 5.5. A seguir o código da classe de persistência:
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
@Entity
public class Automovel {
@Id @GeneratedValue
private Long id;
private String marca;
private String modelo;
private Integer anoFabricacao;
private Integer anoModelo;
private String observacoes;
public void setMarca (String marca){
this.marca = marca;
}
public String getMarca (){
return this.marca;
}
public void setModelo(String modelo){
this.modelo = modelo;
}
public String getModelo(){
return this.modelo;
}
public void setAnoFabricacao(Integer anoFabricacao){
this.anoFabricacao = anoFabricacao;
}
public Integer getAnoFabricacao(){
return this.anoFabricacao;
}
public void setAnoModelo(Integer anoModelo){
this.anoModelo = anoModelo;
}
public Integer getAnoModelo(){
return this.anoModelo;
}
public void setObservacoes (String observacoes){
this.observacoes = observacoes;
}
public String getObservacoes(){
return this.observacoes;
}
}
Classe da aplicação que invoca a classe de persistência:
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.EntityTransaction;
public class PersistidorDeAutomovel {
public static void main(String[] args) {
EntityManagerFactory emf = Persistence.createEntityManagerFactory("default");
emf.close();
}
}
O arquivo persistence.xml está da seguinte forma:
<?xml version="1.0" encoding="UTF-8"?>
<persistence 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"
version="2.0">
<persistence-unit name="default">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<class>Automovel</class>
<properties>
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost/automoveis" />
<property name="javax.persistence.jdbc.user" value="root" />
<property name="javax.persistence.jdbc.password" value="root" />
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect" />
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.format_sql" value="true" />
<property name="hibernate.hbm2ddl.auto" value="update" />
</properties>
</persistence-unit>
</persistence>
Já conferi as pastas, e o arquivo persistence.xml está dentro da pasta …scr\META-INF.
Aparentemente é algo simples, entretanto não consigo não fazer funcionar! Alguém poderia me dar uma ajuda?
Grato.
Realmente, era isso! Incluí o Jar do conector MySQL na WEB-INF/lib (mysql-connector-java-5.1.38-bin.jar) e funcionou.