Does anybody know what’s going on here:
I run hibernate 3.2.6 against a PostgreSQL 8.3 (installed via fink) database on my Mac OS X. The setup works fine when I use Java 6 and the JDBC 4 driver (postgresql-8.3-603.jdbc4). However, I need this stuff to work with Java 5 and (hence) JDBC 3 (postgresql-8.3-603.jdbc3). When I change the jar in the classpath and switch to Java 5 (I do this in eclipse), I get the following error:
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)
What’s the problem here? I cannot see it. Here is my hibernate configuration:
<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: The longer, more usual form of the connection URL: jdbc:postgresql://localhost/test has the exact same behaviour.
The driver jar is definitely in the classpath, and I also do not manage to get any errors with this direct JDBC test code:
public static void main(String[] args) throws Exception { Class.forName('org.postgresql.Driver'); Connection con=DriverManager.getConnection('jdbc:postgresql://localhost/test','postgres', 'p'); }
I don’t see you specifying the driver class in your Hibernate configuration. Try adding the following: