有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使用Oracle 10g长字段填充Grails域对象时的java空指针

我们正在尝试从oracle 10g数据库填充域对象。有问题的字段定义为域对象中的字符串,具有以下约束

zdata(空白:假,最大尺寸:3000000)

数据的大小约为70K XML

表定义如下所示:

ZDATA非空长()

我们使用grails生成的getter访问表:

reportData=reportData。获取(reportDataId)

在进行此调用时,我们得到一个空指针异常。这是堆栈跟踪的一部分。 JAVAlang.NullPointerException 在爪哇。lang.String。(String.java:176) 在甲骨文。sql。字符集。AL32UTF8ToString(CharacterSet.java:1518) 在甲骨文。jdbc。驾驶员数据库转换。CharBytesToString(DBConversion.java:610) 在甲骨文。jdbc。驾驶员数据库转换。CharBytesToString(DBConversion.java:555) 在甲骨文。jdbc。驾驶员长存取器。getString(LongAccessor.java:217) 在甲骨文。jdbc。驾驶员T4CLongAccessor。getString(T4CLongAccessor.java:426) 在甲骨文。jdbc。驾驶员OracleResultSetImpl。getString(OracleResultSetImpl.java:403) 在甲骨文。jdbc。驾驶员OracleResultSet。getString(OracleResultSet.java:1515) 在org。阿帕奇。平民dbcp。DelegatingResultSet。getString(DelegatingResultSet.java:224) 在org。冬眠类型StringType。get(StringType.java:18) 在org。冬眠类型NullableType。nullSafeGet(NullableType.java:163) 在org。冬眠类型NullableType。nullSafeGet(NullableType.java:154) 在org。冬眠加载器。hql。QueryLoader。getResultColumnOrRow(QueryLoader.java:333) 在org。冬眠加载器。加载器。getRowFromResultSet(Loader.java:606) 在org。冬眠加载器。加载器。doQuery(Loader.java:701) 在org。冬眠加载器。加载器。doQueryAndInitializeNonLazyCollections(Loader.java:236) 在org。冬眠加载器。加载器。doList(Loader.java:2220) 在org。冬眠加载器。加载器。listIgnoreQueryCache(Loader.java:2104) 在org。冬眠加载器。加载器。列表(Loader.java:2099) 在org。冬眠加载器。hql。QueryLoader。列表(QueryLoader.java:378) 在org。冬眠hql。阿斯特。QueryTranslatorImpl。列表(QueryTranslatorImpl.java:338) 在org。冬眠发动机查询HQLQueryPlan。performList(HQLQueryPlan.java:172) 在org。冬眠impl。SessionImpl。列表(SessionImpl.java:1121) 在org。冬眠impl。QueryImpl。列表(QueryImpl.java:79) 在org。科德豪斯。棒极了。圣杯。奥姆。冬眠元类。ExecuteQueryPersistentMethod$1。doInHibernate(ExecuteQueryPersistentMethod.java:94)

我们使用的是oracle驱动程序10.2.0.3.0


共 (3) 个答案

  1. # 1 楼答案

    这是10.2.0.1.0版发行说明中列出的oracle jdbc驱动程序的已知限制

    根据Oracle JDBC驱动程序版本11.1.0.7.0的发行说明,已修复了此已知限制

  2. # 2 楼答案

    如果要在Oracle中存储XML,请使用XmlType列,该列可以轻松转换为CLOB,并与JDBC 10g驱动程序配合使用,因为这是我们目前在生产环境中使用的

  3. # 3 楼答案

    为什么在Oracle中使用长字段?Long非常过时,您应该使用clob