5

最近、JAVA 7 および JBoss 7.1.1 を使用して実行するようにアプリケーションをアップグレードしました。このアプリケーションは、もともと JAVA 5 および Jboss 4.2.2 で開発されました。このアプリケーションは永続化のために hibernate 3 を使用します。

新しいプラットフォームでは、CLOB フィールドを持つテーブルに INSERT を実行しようとすると、上記のエラーでアプリケーションが失敗します。ojdbc14.jar (バックエンド データベース Oracle 10.2.0.3) を使用しています。

これらは、jboss 7.1.1 構成で確認したものです。

  1. Oracle 用の正しいモジュールの作成。ojdbc14.jar が正しいモジュール ディレクトリに存在することを確認
  2. jboss ディレクトリ内の他の場所に競合する ojdbc.jar が他に存在しないことを確認
  3. アプリケーションが別の ojdbc.jar を参照していないことを確認しました。

どんな洞察も役に立ちます。私はこの問題を解決するために髪を引っ張っています。

どうもありがとう

4

2 に答える 2

7

問題を修正しました。この回答を投稿して、誰かに役立つことを願っています。

クエリで取得したCLOBのインスタンス型を確認したところ、oracle.sql.CLOBと出てきました。したがって、ojdbc.jar のバージョンの不一致であるに違いないと思いました。ojdb.jar の複数のコピーがないか、プロジェクトを何億回もチェックしました。何もありませんでした。

最終的には、休止状態と ojdbc の間の衝突であることが判明しました。java.sql.Clob への参照を変更しました。Hibernate は java.sql.Clob を使用します。これで問題は解決しました。

于 2013-07-03T15:46:09.853 に答える
0

私の状況ではHibernateを使用していませんが、Jbossのようなコンテナを使用しており、jboss-deployment-structure.xmlからoracleのモジュールを削除する必要があったため、oracle.sql.CLOBをもう使用できず、同じ問題がありました

 java.lang.ClassCastException: oracle.sql.CLOB cannot be cast to oracle.sql.CLOB

最後に私が使った

 java.sql.Clob clobValue = (java.sql.Clob)result.getClob("EMIRFILE");

正しく動作します。これが誰かを助けることを願っています。

于 2014-08-06T08:09:21.210 に答える