Нулевой указатель при заполнении объекта Grails Domain длинным полем Oracle 10g

Мы пытаемся заполнить объект домена из базы данных oracle 10g. Рассматриваемое поле определяется как строка в объекте домена со следующими ограничениями.

zdata (пусто: ложь, maxSize: 3000000)

Размер данных составляет примерно 70 КБ XML.

Определение таблицы выглядит так:

ZDATA NOT NULL LONG ()

Мы используем сгенерированный grails геттер для доступа к таблице:

reportData = ReportData.get (reportDataId)

При выполнении этого вызова мы получаем исключение с нулевым указателем. Вот часть нашей трассировки стека. java.lang.NullPointerException в java.lang.String. (String.java:176) в oracle.sql.CharacterSet.AL32UTF8ToString (CharacterSet.java:1518) в oracle.jdbc.driver.DBConversion.CharBytesToString (DBConversion.java:610) в oracle.jdbc.driver.DBConversion.CharBytesToString (DBConversion.java:555) в oracle.jdbc.driver.LongAccessor.getString (LongAccessor.java:217) в oracle.jdbc.driver.T4CLongAccessor.getString (T4CLongAccessor.java:426) в oracle.jdbc.driver.OracleResultSetImpl.getString (OracleResultSetImpl.java:403) в oracle.jdbc.driver.OracleResultSet.getString (OracleResultSet.java:1515) в org.apache.commons.dbcp.DelegatingResultSet.getString (DelegatingResultSet.java:224) в org.hibernate.type.StringType.get (StringType.java:18) в org.hibernate.type.NullableType.nullSafeGet (NullableType.java:163) в org.hibernate.type.NullableType.nullSafeGet (NullableType.java:154) в org.hibernate.loader.hql.QueryLoader.getResultColumnOrRow (QueryLoader.java:333) в org.hibernate.loader.Loader.getRowFromResultSet (Loader.java:606) в org.hibernate.loader.Loader.doQuery (Loader.java:701) в org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections (Loader.java:236) в org.hibernate.loader.Loader.doList (Loader.java:2220) в org.hibernate.loader.Loader.listIgnoreQueryCache (Loader.java:2104) в org.hibernate.loader.Loader.list (Loader.java:2099) в org.hibernate.loader.hql.QueryLoader.list (QueryLoader.java:378) в org.hibernate.hql.ast.QueryTranslatorImpl.list (QueryTranslatorImpl.java:338) в org.hibernate.engine.query.HQLQueryPlan.performList (HQLQueryPlan.java:172) в org.hibernate.impl.SessionImpl.list (SessionImpl.java:1121) в org.hibernate.impl.QueryImpl.list (QueryImpl.java:79) в org.codehaus.groovy.grails.orm.hibernate.metaclass.ExecuteQueryPersistentMethod $ 1.doInHibernate (ExecuteQueryPersistentMethod.java:94)

мы используем драйвер Oracle 10.2.0.3.0.

Похоже, что это может быть известная проблема с oracle, поскольку существует следующая известная ошибка, указанная в примечаниях к выпуску для драйвера oracle 10.2.0.1.0 и 11.1.0.7.0. Я все еще пытаюсь выяснить, есть ли исправление.

Eggs McLaren 05.12.2008 17:30
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
1
2 170
3

Ответы 3

Почему вы используете длинное поле в Oracle? Лонг очень устарел, вам следует использовать клобуку.

Мы не отвечали за схему db. Просто пытаюсь взаимодействовать с ним в том виде, в каком он существует ...

Eggs McLaren 05.12.2008 17:20

Это известное ограничение драйвера oracle jdbc, которое указано в примечаниях к выпуску для версии 10.2.0.1.0.

Это известное ограничение было исправлено в соответствии с примечаниями к выпуску Oracle JDBC Driver Release 11.1.0.7.0.

Если вы храните XML в Oracle, используйте столбец XmlType, который можно легко преобразовать в CLOB и который прекрасно работает с драйвером JDBC 10g, так как это то, что мы в настоящее время используем в нашей производственной среде.

Другие вопросы по теме