【问题标题】:hibernate.connection.provider_class exception:Could not instantiate connection providerhibernate.connection.provider_class 异常:无法实例化连接提供者
【发布时间】:2012-05-19 18:24:12
【问题描述】:

我使用的休眠版本是 3.2.5

这就是我的 cfg.xml 文件的样子,我正在使用 hibernate.connection.provider_class 来检索连接:

<property name="hibernate.connection.provider_class">com.jdbc.ConnProvider</property>
<property name="hibernate.jdbc.batch_size">30</property>
<property name="hibernate.dialect">org.hibernate.dialect.OracleDialect</property>
<property name="hibernate.cache.use_query_cache">false</property>
<property name="hibernate.cache.use_second_level_cache">false</property>
<property name="hibernate.connection.release_mode">after_transaction</property>
<property name="hibernate.connection.autocommit">true</property>
<property name="hibernate.connection.pool_size">0</property>
<property name="hibernate.current_session_context_class">thread</property>    
<property name="hibernate.show_sql">true</property>
<property name="hibernate.hbm2ddl.auto">update</property>    

这是 ConnProvider 类:

    package com.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;
import org.hibernate.HibernateException;
import org.hibernate.connection.ConnectionProvider;

/**
 *
 * @author gOMzY
 */
class ConnProvider implements ConnectionProvider {

    @Override
    public Connection getConnection() throws SQLException {
        Connection conn = null;
        try{

            Class.forName("oracle.jdbc.OracleDriver");
            conn=DriverManager.getConnection("<url>","<username>","<pwd>");
            System.out.println("Connected!!!");
        }catch(Exception e){
            throw new UnsupportedOperationException("Not supported yet.");
        }
        return conn;
    }

    @Override
    public void closeConnection(Connection cnctn) throws SQLException {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public boolean supportsAggressiveRelease() {
        return false;
    }

    @Override
    public void close() throws HibernateException {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public void configure(Properties prprts) throws HibernateException {
        throw new UnsupportedOperationException("Not supported yet.");
    }

}

我得到的异常:

严重:无法实例化连接提供程序 java.lang.IllegalAccessException:类 org.hibernate.connection.ConnectionProviderFactory 无法使用修饰符“”访问 com.infy.jdbc.ConnProvider 类的成员 在 sun.reflect.Reflection.ensureMemberAccess(未知来源) 在 java.lang.Class.newInstance0(未知来源) 在 java.lang.Class.newInstance(未知来源) 在 org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:73) 在 org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:56) 在 org.hibernate.cfg.SettingsFactory.createConnectionProvider(SettingsFactory.java:414) 在 org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:62) 在 org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2009) 在 org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1292) 在 com.infy.jdbc.HibernateStartup.main(HibernateStartup.java:19)

请建议如何解决这个问题。

问候,

【问题讨论】:

    标签: hibernate hibernate-mapping hibernate-criteria


    【解决方案1】:

    请注意,您的连接提供程序具有默认可见性,也许它应该是公开的:

    public ConnProvider implements ConnectionProvider { ... }
    

    【讨论】:

    • 得到了这个异常:信息:初始化连接提供者:com.infy.jdbc.ConnProvider java.lang.UnsupportedOperationException:尚不支持。在 com.infy.jdbc.ConnProvider.configure(ConnProvider.java:47) 在 org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:124) 在 org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:56 ) 在 org.hibernate.cfg.SettingsFactory.createConnectionProvider(SettingsFactory.java:414) 在 org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:62.
    • 这是我的主要方法:SessionFactory sessionFactory = new Configuration().configure("trial.cfg.xml").buildSessionFactory();会话 = sessionFactory.openSession(); tx = session.beginTransaction();登录 login = (Login)session.get(Login.class, new String("Gautam")); System.out.println("姓名:" + login.getName()); System.out.println("年龄:" + login.getAge()); tx.commit();
    • @user182944: UnsupportedOperationException 被您的代码抛出。
    • 是的,请提供一些输入 regd。如何解决这个问题。
    猜你喜欢
    • 2017-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-31
    • 1970-01-01
    • 2013-02-06
    • 1970-01-01
    • 2013-10-05
    相关资源
    最近更新 更多