"Nenhum driver adequado" problema com Hibernate3, PostgreSQL 8.3 e Java 5

votos
1

Alguém sabe o que está acontecendo aqui:

Eu corro hibernate 3.2.6 contra um PostgreSQL 8.3 (instalado via Fink) do banco de dados no meu Mac OS X. A configuração funciona bem quando eu usar Java 6 eo driver JDBC 4 (postgresql-8.3-603.jdbc4). No entanto, eu preciso este material para trabalhar com Java 5 e (portanto) JDBC 3 (postgresql-8.3-603.jdbc3). Quando eu mudar o jar no classpath e alterne para Java 5 (eu faço isso no eclipse), eu recebo o seguinte erro:

Exception in thread main org.hibernate.exception.JDBCConnectionException: Cannot open connection
    at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:74)
<Rows clipped for readability>
Caused by: java.sql.SQLException: No suitable driver
    at java.sql.DriverManager.getConnection(DriverManager.java:545)
    at java.sql.DriverManager.getConnection(DriverManager.java:140)
    at org.hibernate.connection.DriverManagerConnectionProvider.getConnection(DriverManagerConnectionProvider.java:110)
    at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:423)

Qual é o problema aqui? Eu não consigo ver. Aqui está a minha configuração de hibernação:

<hibernate-configuration>

    <session-factory>
        <property name=connection.url>jdbc:postgresql:test</property>
        <property name=connection.username>postgres</property>
        <property name=connection.password>p</property>
        <property name=connection.pool_size>1</property>
        <property name=dialect>org.hibernate.dialect.PostgreSQLDialect</property>
        <property name=current_session_context_class>thread</property>
        <property name=show_sql>true</property>
        <mapping resource=com/mydomain/MyClass.hbm.xml/>
    </session-factory>
</hibernate-configuration>

EDIT: A forma usual mais longa, mais do URL conexão: jdbc: postgresql: // localhost / teste tem o mesmo comportamento exato.

O frasco motorista é definitivamente no classpath, e eu também não conseguem obter quaisquer erros com este código de teste JDBC direta:

public static void main(String[] args) throws Exception {
  Class.forName(org.postgresql.Driver);  
  Connection con=DriverManager.getConnection(jdbc:postgresql://localhost/test,postgres, p);
}
Publicado 07/11/2008 em 20:04
fonte usuário
Em outras línguas...                            


5 respostas

votos
1

você notou que a URL de conexão é incompleta

<property name="connection.url">jdbc:postgresql:test</property>

ao contrário de

<property name="connection.url">jdbc:postgresql://localhost/test</property>
Respondeu 07/11/2008 em 20:45
fonte usuário

votos
1

Você diz "trabalhar com Java 5 e (portanto) JDBC 3 (postgresql-8.3-603.jdbc3)." Talvez esta seja uma falsa verdade.

A página de download é confuso para mim. Ele parece implicar que para Java 1.5 você precisa JDBC3 mas não é 100% claro. Eu não sei por que o motorista JDBC4 não vai trabalhar com Java 1.5 (usamos um driver DB2 JDBC4 com Java 1.5).

Já experimentou o motorista JDBC4 com Java 1.5?

Respondeu 07/11/2008 em 21:19
fonte usuário

votos
4

Eu não vê-lo especificando a classe do driver na sua configuração Hibernate. Tente adicionar o seguinte:

<hibernate-configuration>
    <session-factory>
        .
        .
        <property name="connection.driver_class">org.postgresql.Driver</property>
        .
    </session-factory>
</hibernate-configuration>
Respondeu 07/11/2008 em 22:04
fonte usuário

votos
1

Um dos novos recursos JDBC4 é carregamento automático através do mecanismo de Provedor de Serviços. Ao incluir um arquivo serviços java.sql.Driver META-INF / / no arquivo jar, não há mais a necessidade de fazer Class.forName ( ""). Isso só funciona com o 1.6 JVM.

Respondeu 27/12/2009 em 03:09
fonte usuário

votos
1

Eu tive o mesmo problema "nenhum driver suiteble encontrado" usando um servlet a solução para registrar um driver é:

Class driverClass = Class.forName("org.postgresql.Driver");
DriverManager.registerDriver((Driver) driverClass.newInstance());

Encontrado a solução aqui:

http://www.java2s.com/Tutorial/Java/0340__Database/DriverManagergetDriversenumeratealltheloadedJDBCdrivers.htm

http://codingexplorer.wordpress.com/2009/09/06/%E2%80%9Cno-suitable-driver%E2%80%9D-for-postgresql/

Respondeu 15/11/2010 em 11:11
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more