java.lang.ClassCastException:oracle.sql.CLOB无法强制转换为oracle.sql.CLOB

时间:2013-06-19 20:36:05

标签: java hibernate jboss clob

我最近升级了一个使用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 个答案:

答案 0 :(得分:7)

我解决了这个问题。发表这个答案,希望它可能对某人有用。

当我检查查询检索到的CLOB的实例类型时,它出现为oracle.sql.CLOB。所以我认为它必定是ojdbc.jar的版本不匹配。我为ojdb.jar的多个副本检查了我的项目数十亿次。没有。

最后,结果证明是hibernate和ojdbc之间的冲突。我更改了对java.sql.Clob的引用。 Hibernate使用java.sql.Clob。这解决了这个问题。

答案 1 :(得分: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");

并且正常工作。 我希望这有助于某人。