Проблема «Нет подходящего драйвера» в Hibernate3, PostgreSQL 8.3 и Java 5 - PullRequest
1 голос
/ 07 ноября 2008

Кто-нибудь знает, что здесь происходит:

Я запускаю hibernate 3.2.6 для базы данных PostgreSQL 8.3 (установленной через fink) на моей Mac OS X. Настройка отлично работает, когда я использую Java 6 и драйвер JDBC 4 (postgresql-8.3-603.jdbc4). Однако мне нужен этот материал для работы с Java 5 и (следовательно) JDBC 3 (postgresql-8.3-603.jdbc3). Когда я меняю jar в classpath и переключаюсь на Java 5 (я делаю это в eclipse), я получаю следующую ошибку:

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)

В чем здесь проблема? Я не могу видеть это. Вот моя конфигурация гибернации:

<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>

РЕДАКТИРОВАНИЕ: Более длинная, более обычная форма URL-адреса соединения: jdbc: postgresql: // localhost / test имеет точно такое же поведение.

Jar-файл драйвера определенно находится в classpath, и мне также не удается получить никаких ошибок с помощью этого прямого кода теста JDBC:

public static void main(String[] args) throws Exception {
  Class.forName("org.postgresql.Driver");  
  Connection con=DriverManager.getConnection("jdbc:postgresql://localhost/test","postgres", "p");
}

Ответы [ 5 ]

4 голосов
/ 08 ноября 2008

Я не вижу, чтобы вы указали класс драйвера в вашей конфигурации Hibernate. Попробуйте добавить следующее:

<hibernate-configuration>
    <session-factory>
        .
        .
        <property name="connection.driver_class">org.postgresql.Driver</property>
        .
    </session-factory>
</hibernate-configuration>
1 голос
/ 15 ноября 2010

У меня была такая же проблема "не найден подходящий драйвер" с использованием сервлета, решение для регистрации драйвера:

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

Нашел решение здесь:

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/

1 голос
/ 27 декабря 2009

Одной из новых функций JDBC4 является автоматическая загрузка через механизм Service Provider. Включив в файл jar файл META-INF / services / java.sql.Driver, больше нет необходимости использовать Class.forName (""). Это работает только с 1.6 JVM.

1 голос
/ 07 ноября 2008

Вы говорите: «Работайте с Java 5 и (следовательно) JDBC 3 (postgresql-8.3-603.jdbc3)». Может быть, это ошибочное предположение.

Страница загрузки сбивает меня с толку. Кажется, подразумевается, что для Java 1.5 вам нужен JDBC3, но это не на 100% ясно. Я не уверен, почему драйвер JDBC4 не будет работать с Java 1.5 (мы используем драйвер DB2 JDBC4 с Java 1.5).

Вы пробовали драйвер JDBC4 с Java 1.5?

1 голос
/ 07 ноября 2008

вы заметили, что URL-адрес соединения не завершен

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

в отличие от

<property name="connection.url">jdbc:postgresql://localhost/test</property>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...