【发布时间】:2018-12-18 12:28:37
【问题描述】:
我们最近针对 11g Oracle 数据库提升了一个使用 ojdbc6 在 JDK6 下编写的主要应用程序。在同一个 11g 数据库上使用 JDK8 得到了提升,但我们也在升级到 12c。提升的代码已经在生产环境中针对 11g 数据库运行,但比以前慢了。针对 QA 环境中的 12c 数据库,我们注意到作业要么抛出异常,要么运行速度非常慢。当我查看代码时,我注意到指定提升代码的项目团队未能将 ojdbc 从 6 升级到至少 8。我已经完成了这项工作,但现在我们在提交以下代码时遇到错误:
Calendar endModDate = Calendar.getInstance();
// get the timestamp from the db
Query qry = em.createNativeQuery("select SYSTIMESTAMP from dual");
TIMESTAMPTZWrapper tsTZWrapper = (TIMESTAMPTZWrapper)qry.getSingleResult();
em 是我们的实体管理器。但是当代码调用 qry.getSingleResult() 成员函数时,我们得到了这个错误:
oracle.sql.TIMESTAMPTZ 无法转换为 org.eclipse.persistence.internal.platform.database.oracle.TIMESTAMPTZWrapper
我已经从高处和低处搜索了答案,但任何类似于答案的东西似乎都无法解决我的解决方案。相同的逻辑用于代码的另一个区域并产生相同的问题。如果我们切换回 ojdbc6,它就可以工作,但我们不能使用 ojdbc6(我们真的不应该,因为我们使用的是 jdk8),因为我们需要在下个月升级到 Oracle 12c。
感谢您在此问题上的任何帮助。
【问题讨论】:
标签: oracle java-8 eclipselink ojdbc