"Correct driver problem" with Hibernate3, PostgreSQL 8.3 and Java 5
Does anyone know what's going on here:
I am running hibernate 3.2.6 against PostgreSQL 8.3 database (installed via fink) on my Mac OS X. The setup works fine when I use Java 6 and 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 on 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 is the problem? I do not see it. Here is my hibernate config:
<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>
The EDIT: . The longer, more common form of the connection url: jdbc: postgresql: // localhost / test has the same behavior.
The driver box is definitely on the classpath and I am also unable to get any errors with this straight 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");
}
source to share
You say, "Work with Java 5 and (therefore) JDBC 3 (postgresql-8.3-603.jdbc3)". Perhaps this is an erroneous assumption.
the download page is confusing me. It sounds like you need JDBC3 for Java 1.5, but it's not 100% clear. I'm not sure why the JDBC4 driver won't work with Java 1.5 (we are using the JDBC4 DB2 driver since Java 1.5).
Have you tried the JDBC4 driver with Java 1.5?
source to share
I had the same problem as a "driver not found" using a servlet, the solution for registering the driver is:
Class driverClass = Class.forName("org.postgresql.Driver");
DriverManager.registerDriver((Driver) driverClass.newInstance());
Found a solution here:
http://codingexplorer.wordpress.com/2009/09/06/%E2%80%9Cno-suitable-driver%E2%80%9D-for-postgresql/
source to share