【问题标题】:Hibernate doesn't want to load Oracle driverHibernate 不想加载 Oracle 驱动程序
【发布时间】:2012-05-04 04:25:51
【问题描述】:

我下载了 Hibernate 4.1.2 并使用 Oracle Database 10g 第 2 版。我使用的 JDBC 驱动程序是 ojdbc14.jar

我将 HibernateUtil 类设置为:

public class HibernateUtil {
    private static final SessionFactory sessionFactory = buildSessionFactory();

    private static SessionFactory buildSessionFactory() {
        // Create the SessionFactory from hibernate.cfg.xml
        try{
            Configuration configuration = new Configuration();
            configuration.configure();
            ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry();        
            return configuration.buildSessionFactory(serviceRegistry);
        }catch(HibernateException ex){
            ex.printStackTrace();
            throw ex;
        }
    }

    public static SessionFactory getSessionFactory() {
        return sessionFactory;
    }
}

hibernate.properties 我有:

hibernate.dialect org.hibernate.dialect.OracleDialect
hibernate.connection.driver_class oracle.jdbc.driver.OracleDriver
hibernate.connection.username HR
hibernate.connection.password HR
hibernate.connection.url jdbc:oracle:thin:@localhost:1521/xe

但是 Hibernate 不想加载驱动程序。它会抛出一个异常,提示“找不到合适的驱动程序”。

我尝试使用Class.forName("oracle.jdbc.driver.OracleDriver"); 加载驱动程序,它工作正常。

【问题讨论】:

  • 属性不应该用= 字符分隔吗? IE。 hibernate.dialect=org.hibernate.dialect.OracleDialect 等等?
  • @mcfinnigan,好点子,但在例外情况下,我看到“没有适合 jdbc:oracle:thin:@localhost:1521/xe 的驱动程序”,所以它看起来可以正常读取文件。跨度>
  • 嗯。你确定 oracle jar 在类路径上吗?
  • 是的。我可以通过Class.forName加载它。
  • 如果在构造Configuration之前添加Class.forName(...)会怎样?

标签: java oracle hibernate


【解决方案1】:

问题在于使用了错误的 JDBC Oracle 驱动程序。当我尝试使用 ojdbc6.jar 时,一切正常。

【讨论】:

    【解决方案2】:

    有几点:

    • 尝试通过在键和值之间放置 = 来使属性文件有效
    • 检查值后是否没有任何尾随空格
    • 使用oracle.jdbc.OracleDriver 而不是oracle.jdbc.driver.OracleDriver。如需进一步参考,请参阅Difference between Oracle jdbc driver classes?

    【讨论】:

    • 顺便说一下,properties 文件是有效的,但是这种语法很少使用,所以很奇怪。
    • 我使用oracle.jdbc.OracleDriveroracle.jdbc.driver.OracleDriver 似乎并不重要
    • 您可以将完整的 Hibernate 堆栈跟踪添加到您的帖子中吗?
    【解决方案3】:

    你的连接URL配置错误,应该是:

    hibernate.connection.url jdbc:oracle:thin:@localhost:1521:xe
    

    更多Oracle的URL可以参考here

    正如其他答案指出的那样:

    使用oracle.jdbc.OracleDriver 而不是oracle.jdbc.driver.OracleDriver

    【讨论】:

    • 我使用...@localhost:1521:xe 还是...@localhost:1521/xe 似乎并不重要。正如我通过 JDBC 所说,我能够使用完全相同的设置进行连接。
    猜你喜欢
    • 2013-05-08
    • 1970-01-01
    • 1970-01-01
    • 2016-12-02
    • 1970-01-01
    • 2010-10-05
    • 2012-09-06
    • 2016-05-24
    • 1970-01-01
    相关资源
    最近更新 更多