[RESOLVIDO] Hibernate + JPA 2 + Vraptor Problema no Dialect

3 respostas
J

Galera, boa noite

Eu estava fazendo um projeto de exemplo com o Hibernate 3 e VRaptor, e estava funcionando normalmente. Ai resolvi, usar o padrão JPA (tirei o arquivo hibernate.cfg.xml do src e coloquei o persistence.xml no META-INF e fiz as devidas alterações). Até ai tudo bem, deu alguns problemas de jars que faltavam, mas foi resolvido. Mas começou a dar um erro estranho em que procurei no google e aqui no guj e não acheii, se vocês puderem me ajudar. O erro é esse:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'criadorDeEntityManagerFactory': Invocation of init method failed; nested exception is javax.persistence.PersistenceException: org.hibernate.HibernateException: 'hibernate.dialect' must be set when no Connection available

Persistence.xml

<?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="musica">
	 	<provider>org.hibernate.ejb.HibernatePersistence</provider>
	 	<class>com.musica.persistence.entity.Produto</class>
	 	
	 	<properties>	
	 		 
	 		<property name="hibernate.hbm2ddl.auto" value="update"/>
	 		<property name="hibernate.show_sql" value="true"/>
	 		<property name="hibernate.format_sql" value="true"/>
	 		<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLInnoDBDialect"/>
	 		
	 		<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
	 		<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost/fj28"/>
	 		<property name="javax.persistence.jdbc.user" value="teste" />
	 		<property name="javax.persistence.jdbc.password" value="teste" />
	 		
	 	</properties>
	 
	 </persistence-unit>
	 
	 </persistence>

Criador de EntityManagerFactory

package com.musica.persistence.util;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

import br.com.caelum.vraptor.ioc.ApplicationScoped;
import br.com.caelum.vraptor.ioc.Component;
import br.com.caelum.vraptor.ioc.ComponentFactory;

@Component
@ApplicationScoped
public class CriadorDeEntityManagerFactory implements
		ComponentFactory<EntityManagerFactory> {

	private EntityManagerFactory factory;

	@PostConstruct
	public void abre() {		
		factory = Persistence.createEntityManagerFactory("musica");
	}

	@Override
	public EntityManagerFactory getInstance() {
		return factory;
	}
	
	@PreDestroy
	public void fecha(){
		this.factory.close();
	}

}

Já vi em alguns lugares, que teve gente que trocou o xml pelo arquivo properties do Hibernate e funcionou, mas queria usando o xml do JPA mesmo, alguma idéia?

Valeu!

3 Respostas

J

Estava fazendo uns testes aqui e apaguei a linha do dialeto no persistence.xml

E não mudou o erro, continua o mesmo, será que o persistence está no lugar errado? Ou errei o nome da propriedade?

O persistence.xml está dentro da pasta META-INF que o eclipse criou

luxu

o persistence está na pasta certa META-INF, mas essa pasta META-INF fica dentro da pasta SRC que está dentro da pasta JAVA RESOURCES v ae…lembrando q essa pasta META-INF q está dentro da pasta WEB CONTENT NÃO pode ser excluída e nem o arquivo MANIFEST.MF, ou seja, crie uma pasta META-INF onde falei o dentro dela vai o persistence.xml… veja como está o meu…

J

Cara, valeu pela ajuda

Tá dando outros erros, mas é por causa dos jars.

Achei que ele reconheceria o persistence.xml dentro da pasta web-inf que o eclipse cria

Valeu!

Criado 16 de abril de 2011
Ultima resposta 17 de abr. de 2011
Respostas 3
Participantes 2