Я получаю сообщение об ошибке ORA-12899 при обновлении сущностей в БД через EclipseLink. Исключение звучит следующим образом:
Обнаружено исключение RuntimeException: org.springframework.transaction.TransactionSystemException: не удалось зафиксировать транзакцию JPA; вложенным исключением является javax.persistence.RollbackException: Exception [EclipseLink-4002] (Eclipse Persistence Services — 2.1.1.v20100817-r8050): org.eclipse.persistence.exceptions.DatabaseException Внутреннее исключение: java.sql.BatchUpdateException: ORA-12899 : слишком большое значение для столбца "T_MONITORING"."ВЕРСИЯ" (фактическое: 295, максимальное: 255)
Код ошибки: 12899 Запрос: UpdateObjectQuery (MonitoringBE@7e6dc6aeMonitoringBE {id: 17b50dcd-3184-4b47-998a-7c3a93a71695, имя хоста: HOSTNAME, ReleaseTimestamp: 2013-10-17 12:04:01.578, версия java: 1.6.0_24, программное обеспечение .30.SP401-RC8, testId: 6e1bc90f_549a_46aa_91f2_e9ff8a96baef, версия: PSDZ:4.8.1.0332013 - 20130522-1210;KIS AWL:5.0.0;KIS-WB:[S15A;0;0;32;2;Пн окт. 07 15:03:55 CEST 2013;4556499;3;Ausleitung zu SAb;8;8], lastMrtAnswer: 2013-10-17 12:45:15.471, serverInstance: MyServer, lastModified: 2013-10-17 12:45:24.088})
Столбец «ВЕРСИЯ» определяется как VARCHAR2 (255 CHAR). Моя проблема в этом случае заключается в том, что длина строки в исключении не превышает 255 символов. Как это может быть? Является ли вывод исключения неверным? Запрос на обновление не выполняется.
BusinessEntity (MonitoringBE) управляется в простой Java с использованием методов установки. Затем в диспетчере сущностей (javax.persistence.EntityManager) вызывается слияние:
getEntityManager().merge( entity )
Я использую Oracle 11g Enterprise (11.2.0.2.0) с EclipseLink 2.1.1 с Java 1.6.0.24 Glassfish Server. Набор символов в Oracle — AL32UTF8, который должен хранить все типы символов (4 байта).
Кто-нибудь может помочь?