2

Hibernate を使用する Eclipse プラグインがあります。私が使用する Hibernate jar は、インストールした JBOSS Tools プラグインの一部です。Eclipse 4.2 Juno に移行し、JBOSS Tools for Juno も更新しました。

今私の問題は、現在のコードが機能しなくなったことです。私には、HIbernate と私のアプリケーションの間の ClassLoader の問題のようです。

動的 JDBC ドライバーをロードするコードがあります。URLClassLoaderを拡張する Class を使用して 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 も呼び出すため、奇妙です。どんな手掛かり?

あなたの助けに感謝します!

4

2 に答える 2

0

Hibernateでデータベース接続を提供する標準的な方法は、SessionFactoryを返すConfiguration()。configure()。buildSessionFactory()を使用することです。

SessionFactoryオブジェクトはシングルトンとして構成する必要があります。静的メソッドgetCurrentSession()があり、休止状態のセッションを返します。

重要:ファイルhibernate.cfg.xmlをクラスパスに入れる必要があります。Eclipseを使用している場合は、このファイルをsrcフォルダーに入れることができます。

この構成ファイルには、hibernate.connection.url、hibernate.connection.username、およびhibernate.connection.passswordが含まれている必要があります。

例はたくさんあります。つまり、http://manikandanmv.wordpress.com/2011/04/13/hibernate-basics-simple-example/

于 2012-11-13T20:43:35.877 に答える
0

解決策を見つけました。JBoss の Hibernatools には、クライアントが別のプラグイン パッケージで使用する独自の FakeDelegatingDriver オブジェクトがあるようです。org.hibernate.eclipse.libs 動的ドライバーをロードできるように、独自の FakeDriver の代わりにそれを使用しました。

于 2012-11-15T20:34:02.293 に答える