我有一个使用 Hibernate 的 Eclipse 插件。我使用的 Hibernate jar 是我安装的 JBOSS Tools 插件的一部分。我迁移到 Eclipse 4.2 Juno 并更新了适用于 Juno 的 JBOSS 工具。
现在我的问题是,我当前的代码不再工作了。对我来说,HIbernate 和我的应用程序之间似乎存在 ClassLoader 问题。
我有加载动态 JDBC 驱动程序的代码。我使用扩展URLClassLoader的类加载 jar,并使用DriverManager注册假驱动程序。接下来我构建SessionFactory,然后获取Session,然后是Transaction
Session hbmSession = mySessionFactory.getCurrentSession();
Transaction tx = hbmSession.getTransaction();
当我打电话给
DriverManager.getConnection(<my_jdbc_url>,<user>,<pwd>);
我能够取回 Connection 对象,但是当我将 Session 调用到 beginTransaction() 时,它就爆炸了
if (tx == null || !tx.isActive()) {
tx = hbmSession.beginTransaction();
}
并抛出此错误:
Caused by: java.sql.SQLException: No suitable driver found for
jdbc:oracle:thin:@190.255.10.10:1521:DBID
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at org.hibernate.connection.DriverManagerConnectionProvider.getConnection(DriverManagerConnectionProvider.java:133)
at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:446)
这很奇怪,因为它还调用 DriverManager 来获取连接。有什么线索吗?
感谢你们的帮助!