一尘不染

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

hibernate

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

在新平台上,尝试插入具有上述错误的带有CLOB字段的表时,应用程序失败。我正在使用ojdbc14.jar(后端数据库Oracle 10.2.0.3)

这些是我在jboss 7.1.1配置中验证的:

  1. 为Oracle创建正确的模块。确保正确的模块目录中存在ojdbc14.jar
  2. 确保jboss目录中其他任何地方都没有其他冲突的ojdbc.jar
  3. 确保该应用程序未引用其他ojdbc.jar。

任何见解都会有所帮助。我花了将近一个星期的时间来尝试解决此问题。

非常感谢


阅读 812

收藏
2020-06-20

共1个答案

一尘不染

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

当我检查查询检索到的CLOB的实例类型时,它显示为oracle.sql.CLOB。因此,我认为它一定是ojdbc.jar的版本不匹配。我花了数百万亿次检查我的项目,以获取ojdb.jar的多个副本。没有。

最终,事实证明这是hibernate和ojdbc之间的冲突。我将引用更改为java.sql.Clob。Hibernate使用java.sql.Clob。这样就解决了问题。

2020-06-20