[Resolvido] Problema "Connection cannot be null when hibernate.dialect not set"

caras, to pra ficar maluco ja aqui…depois que fiz as mudanças do hibernate 3 pra o 4, estou tendo esse problema.

Segue o console com o erro:

Initial SessionFactory creation failed.org.hibernate.HibernateException: Connection cannot be null when ‘hibernate.dialect’ not set
Mai 29, 2013 10:15:46 AM com.sun.faces.application.view.FaceletViewHandlingStrategy handleRenderException
SEVERE: Error Rendering View[/index.xhtml]
javax.el.ELException: /index.xhtml @13,72 value="#{livroController.listarLivros}": Error reading ‘listarLivros’ on type controller.LivroController
at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:114)
at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:194)
at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:182)
at javax.faces.component.UIData.getValue(UIData.java:731)
at javax.faces.component.UIData.getDataModel(UIData.java:1798)
at javax.faces.component.UIData.setRowIndexWithoutRowStatePreserved(UIData.java:484)
at javax.faces.component.UIData.setRowIndex(UIData.java:473)
at com.sun.faces.renderkit.html_basic.TableRenderer.encodeBegin(TableRenderer.java:81)
at javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:820)
at javax.faces.component.UIData.encodeBegin(UIData.java:1118)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1777)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1782)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1782)
at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:402)
at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:125)
at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1002)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:722)
Caused by: java.lang.ExceptionInInitializerError
at utils.HibernateUtil.createSessionFactory(HibernateUtil.java:28)
at dao.LivroDAOImp.list(LivroDAOImp.java:27)
at controller.LivroController.getListarLivros(LivroController.java:24)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at javax.el.BeanELResolver.getValue(BeanELResolver.java:87)
at com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176)
at com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203)
at org.apache.el.parser.AstValue.getValue(AstValue.java:183)
at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:185)
at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:109)
… 34 more
Caused by: org.hibernate.HibernateException: Connection cannot be null when ‘hibernate.dialect’ not set
at org.hibernate.service.jdbc.dialect.internal.DialectFactoryImpl.determineDialect(DialectFactoryImpl.java:97)
at org.hibernate.service.jdbc.dialect.internal.DialectFactoryImpl.buildDialect(DialectFactoryImpl.java:67)
at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:174)
at org.hibernate.service.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:75)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:159)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:131)
at org.hibernate.cfg.Configuration.buildTypeRegistrations(Configuration.java:1797)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1755)
at utils.HibernateUtil.createSessionFactory(HibernateUtil.java:25)
… 46 more

Initial SessionFactory creation failed.org.hibernate.HibernateException: Connection cannot be null when ‘hibernate.dialect’ not set

Segue o xml hibernate.cfg.xml


<?xml version='1.0' encoding='utf-8'?> 
<!DOCTYPE hibernate-configuration PUBLIC 
"-//Hibernate/Hibernate Configuration DTD 3.0//EN" 
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration> 
    
	<session-factory>
	    <property name="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</property>
		<property name="hibernate.connection.driver_class">org.postgresql.Driver</property>
		<property name="hibernate.connection.url">jdbc:postgresql://localhost:5432/LivrosHibernate/public</property>
		<property name="hibernate.connection.username">postgres2</property>
		<property name="hibernate.connection.password">random</property>
		<property name="hibernate.hbm2ddl.auto">create-drop</property>
	</session-factory>
	
 </hibernate-configuration> 

Classe Sessionfactory


import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;

public class HibernateUtil {

		
	private static SessionFactory sessionFactory;
	
	public static SessionFactory createSessionFactory(){
		if(sessionFactory == null){
			try{
				ServiceRegistryBuilder registryBuilder = new ServiceRegistryBuilder();
				ServiceRegistry serviceRegistry = registryBuilder.loadProperties("hibernate.cfg.xml").buildServiceRegistry();
				sessionFactory = new Configuration().configure().buildSessionFactory(serviceRegistry);
			}catch(Throwable ex){
				System.err.println("Initial SessionFactory creation failed." +ex);
				throw new ExceptionInInitializerError(ex);
			}
			return sessionFactory;
		}else{
			return sessionFactory;
		}
	}
}

Desde já, agradeço.
Valeu!

Está como Resolvido, mas não tem a resolução no tópico. Estou com o mesmo problema. Como você corrigiu?

Consegui encontrar uma solução, verifique se vai resolver o seu problema.

package br.com.projeto.usaHibernateUtil;

import org.hibernate.Session;
import javax.swing.JOptionPane;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistryBuilder;
import org.hibernate.service.ServiceRegistry;

public class HibernateUtil {
    
    private static SessionFactory FabricaSessoes;
    
    static{
        try{
            ServiceRegistryBuilder registryBuilder = new ServiceRegistryBuilder();  

            // Observe que eu estou passando o caminho onde esta o meu arquivo de propriedades
            ServiceRegistry serviceRegistry = registryBuilder.loadProperties("br/com/projeto/Configuracoes/hibernate.propertie").buildServiceRegistry();  

            // Agora eu estou passando o caminho do arquivo de configuração.
            FabricaSessoes = new Configuration().configure("br/com/projeto/Configuracoes/hibernate.cfg.xml").buildSessionFactory(serviceRegistry); 
        }
        catch(Exception erro){
            JOptionPane.showMessageDialog(null, "Erro na Fabricade de sessões = " + erro);
            FabricaSessoes = null;
        }
    }
    
    public static Session getSessao(){
        return FabricaSessoes.openSession();
    }
}