5

我最近升级了一个应用程序以使用 JAVA 7 和 JBoss 7.1.1 运行此应用程序最初是在 JAVA 5 和 Jboss 4.2.2 上开发的。此应用程序使用 hibernate 3 进行持久化。

在新平台上,当尝试插入具有上述错误的 CLOB 字段的表时,应用程序将失败。我正在使用 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 的多个副本。没有。

最后证明是hibernate和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 回答