Unable to configure EntityManagerFactory [Resolvido]

17 respostas
leonardoterrao

Olá pessoal! estou tentando fazer um exemplo com JPA e Hibernate mas entrei em um erro onde estou parado !

Qual seria a saída para este erro !?

0 [main] INFO  org.hibernate.annotations.common.Version - Hibernate Commons Annotations 3.2.0.Final
16 [main] INFO  org.hibernate.cfg.Environment - Hibernate 3.6.5.Final
16 [main] INFO  org.hibernate.cfg.Environment - hibernate.properties not found
16 [main] INFO  org.hibernate.cfg.Environment - Bytecode provider name : javassist
31 [main] INFO  org.hibernate.cfg.Environment - using JDK 1.4 java.sql.Timestamp handling
110 [main] INFO  org.hibernate.ejb.Version - Hibernate EntityManager 3.6.5.Final
875 [main] INFO  org.hibernate.cfg.AnnotationBinder - Binding entity from annotated class: caelum.virtual.gwt.client.Editora
953 [main] INFO  org.hibernate.cfg.annotations.EntityBinder - Bind entity caelum.virtual.gwt.client.Editora on table editora
1016 [main] INFO  org.hibernate.cfg.Configuration - Hibernate Validator not found: ignoring
javax.persistence.PersistenceException: [PersistenceUnit: JPA] Unable to configure EntityManagerFactory
	at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:378)
	at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:56)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:48)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:32)
	at caelum.virtual.gwt.server.GeraTabelas.main(GeraTabelas.java:23)
Caused by: org.hibernate.HibernateException: Unable to get the default Bean Validation factory
	at org.hibernate.cfg.beanvalidation.BeanValidationActivator.applyDDL(BeanValidationActivator.java:127)
	at org.hibernate.cfg.Configuration.applyBeanValidationConstraintsOnDDL(Configuration.java:1704)
	at org.hibernate.cfg.Configuration.applyConstraintsToDDL(Configuration.java:1654)
	at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1445)
	at org.hibernate.cfg.Configuration.buildMappings(Configuration.java:1375)
	at org.hibernate.ejb.Ejb3Configuration.buildMappings(Ejb3Configuration.java:1519)
	at org.hibernate.ejb.EventListenerConfigurator.configure(EventListenerConfigurator.java:193)
	at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:1100)
	at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:282)
	at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:366)
	... 4 more
Caused by: java.lang.reflect.InvocationTargetException
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.hibernate.cfg.beanvalidation.BeanValidationActivator.applyDDL(BeanValidationActivator.java:118)
	... 13 more
Caused by: org.hibernate.HibernateException: Unable to build the default ValidatorFactory
	at org.hibernate.cfg.beanvalidation.TypeSafeActivator.getValidatorFactory(TypeSafeActivator.java:383)
	at org.hibernate.cfg.beanvalidation.TypeSafeActivator.applyDDL(TypeSafeActivator.java:109)
	... 18 more
Caused by: javax.validation.ValidationException: Unable to find a default provider
	at javax.validation.Validation$GenericBootstrapImpl.configure(Validation.java:264)
	at javax.validation.Validation.buildDefaultValidatorFactory(Validation.java:111)
	at org.hibernate.cfg.beanvalidation.TypeSafeActivator.getValidatorFactory(TypeSafeActivator.java:380)
	... 19 more

meu pesistence.xml

<?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="JPA" transaction-type="RESOURCE_LOCAL">
		<provider>org.hibernate.ejb.HibernatePersistence</provider>
		<properties>
			<property name="hibernate.show_sql" value="true" />
			<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
			<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost/gwt" />
			<property name="javax.persistence.jdbc.user" value="root" />
			<property name="javax.persistence.jdbc.password" value="root" />
			<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect" />
			<property name="hibernate.hbm2ddl.auto" value="update" />
		</properties>
	</persistence-unit>
</persistence>

minha classe anotada:

package caelum.virtual.gwt.client;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

@SuppressWarnings("serial")
@Entity
@Table(name="contato")
public class Contato implements Serializable{
	
	@Id 
	@GeneratedValue(strategy=GenerationType.AUTO)
	private Long id;
	@Column
	private String nome;
	@Column
	private String email;

	public Long getId() {
		return id;
	}
	public void setId(Long id) {
		this.id = id;
	}
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}

}
Classe que estou executando
package caelum.virtual.gwt.server;

import javax.persistence.Persistence;

public class GeraTabelas {

	public static void main(String[] args) {

		try {

			Persistence.createEntityManagerFactory("JPA");

		} catch (Exception e) {
			e.printStackTrace();
		}

	}
}
Aqui as bibliotecas q estou utilizando
antlr-2.7.6.jar
c3p0-0.9.1.jar
cglib-2.2.jar
commons-collections-3.1.jar
dom4j-1.6.1.jar
ejb3-persistence.jar
gwt-servlet.jar
hibernate-entitymanager-3.5.0.Beta-1.jar
hibernate-jpa-2.0-api-1.0.1.Final.jar
lib/hibernate-testing.jar
hibernate-validator-3.0.0.ga.jar
hibernate3.jar
infinispan-core-4.2.1.CR1.jar
javassist-3.12.0.GA.jar
jbosscache-core-3.2.1.GA.jar
jta-1.1.jar
log4j-1.2.16.jar
mysql-connector-java-5.1.18-bin.jar
oscache-2.1.jar
proxool-0.8.3.jar
slf4j-api-1.6.1.jar
slf4j-log4j12-1.6.1.jar

Desde já agradeço pela ajuda pessoal !

17 Respostas

drsmachado

Faltou dizer qual a classe que está mapeada, não??

<class>br.com.pacote.da.classe.ClasseMapeada</class>

Logo abaixo de

<persistence-unit name="JPA" transaction-type="RESOURCE_LOCAL">

leonardoterrao

Obrigado drsmachado!

adicionei o caminho da minha classe abaixo do provider, antes o eclipse acusa erro! testei e o erro ainda continua entao troquei a versao do hibernate, agora estou utilizando o 4.0 mas ainda está dando o mesmo erro :x

<?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="JPA" transaction-type="RESOURCE_LOCAL"> <provider>org.hibernate.ejb.HibernatePersistence</provider> <class>virtual.gwt.jpa.client.Contato</class> <properties> <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" /> <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost/gwt" /> <property name="javax.persistence.jdbc.user" value="root" /> <property name="javax.persistence.jdbc.password" value="root" /> <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect" /> <property name="hibernate.hbm2ddl.auto" value="update" /> <property name="hibernate.show_sql" value="true" /> </properties> </persistence-unit> </persistence>

drsmachado

Pode informar qual a linha referenciada no stackTrace?

at caelum.virtual.gwt.server.GeraTabelas.main(GeraTabelas.java:23)

Ah, mantenha a versão antiga do Hibernate.
E, no dialect, coloque apenas org.hibernate.dialect.MySQLDialect

leonardoterrao

Obrigado !

Vou voltar a versao do hibernate e mudar o dialect e testar… Abaixo está o conteudo da classe GeraTabelas.java:23

drsmachado

Camarada, analisando o problema e pesquisando no google, pude identificar que pode ser algum jar faltando.

Tenta com estes jars que estão aqui http://ge.tt/9Le0B8B?c e me diz se funcionou

leonardoterrao

Muito Obrigado drsmachado!

aqui está bloqueado para eu baixar a lib que vc me passou, mas assim que eu chegar em casa vou testar elas…
Já pesquisei alguns links no Google sobre o erro, descobri que é um erro genérico, pode ser causado por várias ocasiões :x
na maioria das vezes é causado em classes que possuem relacionamento, pode ser também o arquivo de pesistencia.xml errado,
jar faltando ou incompatível… Vou continuar pesquisando aqui e se achar a solução vou postar aqui ! Esse deve ser daqueles erros “bobo” que está na minha frente e eu não estou vendo …

Muito Obrigado !
Leonardo Terrão.

leonardoterrao

drsmachado, conseguir baixar sua lib e sair daquele erro, provavelmente era algum .jar com problema!

agora ta dando outro erro, vou dar uma olhada melhor o que pode ser dessa vez !

vai o erro se alguém já poder dar uma dica!

... 1484 [main] INFO org.hibernate.tool.hbm2ddl.SchemaExport - Running hbm2ddl schema export 1484 [main] INFO org.hibernate.tool.hbm2ddl.SchemaExport - exporting generated schema to database 1484 [main] ERROR org.hibernate.tool.hbm2ddl.SchemaExport - schema export unsuccessful java.lang.UnsupportedOperationException: The user must supply a JDBC connection at org.hibernate.connection.UserSuppliedConnectionProvider.getConnection(UserSuppliedConnectionProvider.java:54) at org.hibernate.tool.hbm2ddl.SuppliedConnectionProviderConnectionHelper.prepare(SuppliedConnectionProviderConnectionHelper.java:51) at org.hibernate.tool.hbm2ddl.SchemaExport.execute(SchemaExport.java:252) at org.hibernate.tool.hbm2ddl.SchemaExport.create(SchemaExport.java:211) at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:343) at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1327) at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:867) at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:669) at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:126) at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:52) at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:34) at virtual.gwt.jpa.server.GeraTabela.main(GeraTabela.java:12)

drsmachado
<persistence>
   <persistence-unit name="livraria" transaction-type="RESOURCE_LOCAL">
	  <class>br.com.elaborata.entities.Autor</class>
	  <class>br.com.elaborata.entities.Livro</class>
      <properties>
         <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>
         <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>
         <property name="hibernate.connection.username" value="root"/>
         <property name="hibernate.connection.password" value="root"/>
         <property name="hibernate.connection.url" value="jdbc:mysql://localhost/jpa"/>
         <property name="hibernate.max_fetch_depth" value="3"/>
         <property name="hibernate.format_sql" value="true" />
         <property name="hibernate.use_sql_comments" value="false" />
         <property name="hibernate.hbm2ddl.auto" value="create" />
         <property name="hibernate.show_sql" value="true" />
         <property name="hibernate.jdbc.batch_size" value="50" />
       
         <!-- alternatively to <class> and <property> declarations, you can use a regular hibernate.cfg.xml file -->
         <!-- property name="hibernate.ejb.cfgfile" value="/org/hibernate/ejb/test/hibernate.cfg.xml"/ -->
      </properties>
   </persistence-unit>
</persistence>

Este é o meu persistence.xml
Está bem diferente do teu, mas tenho certeza que funciona.
Tenta com ele, alterando ali as classes

leonardoterrao

Consegui drsmachado!

Muito Obrigado pela ajuda, agora que está funcionando vou explorar um pouco !

:thumbup:

drsmachado

leonardoterrao:
Consegui drsmachado!

Muito Obrigado pela ajuda, agora que está funcionando vou explorar um pouco !

:thumbup:

Então, compartilha com a galera o que fez para resolver.

Abraço

leonardoterrao

Peguei a lib que vc me passou e seu arquivo persistence.xml e fiz as alterações para funcionar de acordo com meu projeto e ficou 10!

Lib: [url]http://ge.tt/9Le0B8B?c[/url]

<?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="JPA" transaction-type="RESOURCE_LOCAL">
   <provider>org.hibernate.ejb.HibernatePersistence</provider>
	  <class>virtual.gwt.jpa.server.Contato</class>
      <properties>
         <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>
         <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>
         <property name="hibernate.connection.username" value="root"/>
         <property name="hibernate.connection.password" value="root"/>
         <property name="hibernate.connection.url" value="jdbc:mysql://localhost/gwt"/>
         <property name="hibernate.max_fetch_depth" value="3"/>
         <property name="hibernate.format_sql" value="true" />
         <property name="hibernate.use_sql_comments" value="false" />
         <property name="hibernate.hbm2ddl.auto" value="create" />
         <property name="hibernate.show_sql" value="true" />
         <property name="hibernate.jdbc.batch_size" value="50" />
       
         <!-- alternatively to <class> and <property> declarations, you can use a regular hibernate.cfg.xml file -->
         <!-- property name="hibernate.ejb.cfgfile" value="/org/hibernate/ejb/test/hibernate.cfg.xml"/ -->
      </properties>
   </persistence-unit>
</persistence>
Obrigado! Leonardo Terrão.
drsmachado
leonardoterrao:
Peguei a lib que vc me passou e seu arquivo persistence.xml e fiz as alterações para funcionar de acordo com meu projeto e ficou 10!

Lib: [url]http://ge.tt/9Le0B8B?c[/url]

<?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="JPA" transaction-type="RESOURCE_LOCAL">
   <provider>org.hibernate.ejb.HibernatePersistence</provider>
	  <class>virtual.gwt.jpa.server.Contato</class>
      <properties>
         <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>
         <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>
         <property name="hibernate.connection.username" value="root"/>
         <property name="hibernate.connection.password" value="root"/>
         <property name="hibernate.connection.url" value="jdbc:mysql://localhost/gwt"/>
         <property name="hibernate.max_fetch_depth" value="3"/>
         <property name="hibernate.format_sql" value="true" />
         <property name="hibernate.use_sql_comments" value="false" />
         <property name="hibernate.hbm2ddl.auto" value="create" />
         <property name="hibernate.show_sql" value="true" />
         <property name="hibernate.jdbc.batch_size" value="50" />
       
         <!-- alternatively to <class> and <property> declarations, you can use a regular hibernate.cfg.xml file -->
         <!-- property name="hibernate.ejb.cfgfile" value="/org/hibernate/ejb/test/hibernate.cfg.xml"/ -->
      </properties>
   </persistence-unit>
</persistence>
Obrigado! Leonardo Terrão.

Beleza, camarada.

S

Vocês poderiam dizer quais são as libs? estou com o mesmo problema e o link está expirado

leonardoterrao

https://rapidshare.com/files/[telefone removido]/HibernateJPA.rar

ai está a lib que eu uso, tá funcionando beleza!

S

Obrigado

R

Link novamente expirado :C

Alguém poderia me disponibilizar a lib? Também estou quebrando a cabeça com esses erros, e vi nessa lib e no .xml sugerido, uma esperança. ><

F

Onde está a lib ?

Link quebrado.

Criado 13 de dezembro de 2011
Ultima resposta 2 de set. de 2014
Respostas 17
Participantes 5