Получение Java.sql.SQLException: ORA-01461: может связывать значение LONG только для вставки в столбец LONG. При вставке данных - PullRequest
2 голосов
/ 16 января 2012

Я использую Oracle 9.2 с сервером Weblogic 8. Я получаю данные из таблицы и снова обновляюсь в ту же таблицу с теми же данными.

Я получаю ошибку

Java.sql.SQLException: ORA-01461: может связывать значение LONG только для вставки в столбец LONG.

Столбец имеет тип varchar2 (4000 байт).

Может кто-нибудь сообщить мне, почему возникает эта ошибка? Пожалуйста, дайте мне знать, если вам нравится любая другая информация. Ниже мой SQL-запрос:

/**
 * @jc:sql statement::
 * UPDATE CORRECTIVE_ACTION SET
 *     CA_ID = {dt.caId}, 
 *     CA_NBR = {dt.caNbr}, 
 *     CAPA_PLAN_ID = {dt.capaPlanId}, 
 *     OBJ_EVIDENCE_COMP = {dt.objEvidenceComp}, 
 *     APPLICABLE_ELSE_WHERE = {dt.applicableElseWhere}, 
 *     JUSTIFICATION = {dt.justification}, 
 *     MOE = {dt.moe}, 
 *     COMPLETION_DATE = {dt.completionDate}, 
 *     EXTENSION_DUE_DATE = {dt.extensionDueDate}, 
 *     STATUS_CD = {dt.statusCd},
 *     SYSTEM_STATUS_CD = {dt.systemStatusCd},  
 *     ROOT_CAUSE_CD = {dt.rootCauseCd}, 
 *     DESCRIPTION = {dt.description}, 
 *     CA_TYPE = {dt.caType}, 
 *     CREATED_BY = {dt.createdBy}, 
 *     CREATED_DATE = {dt.createdDate}, 
 *     MODIFIED_BY = {dt.modifiedBy}, 
 *     MODIFIED_DATE = {dt.modifiedDate},
 *     COMPLETION_DUE_DATE = {dt.completionDueDate}
 * WHERE CA_ID = {dt.caId}
 * ::
 */
void updateCorrectiveAction(CorrectiveActionDT dt) throws SQLException;

Ответы [ 3 ]

2 голосов
/ 16 января 2012

Ниже ссылка может помочь вам ...

семантика CHAR и ORA-01461

Также попробуйте поискать свой вопрос на Stackoverflow , вы получите ответы ...

1 голос
/ 19 января 2012

Я решил эту проблему, добавив: oracle.jdbc.RetainV9LongBindBehavior=true в свойствах сервера для источника данных.

0 голосов
/ 18 марта 2016

Если вы используете режим гибернации и пытаетесь вставить строку длиной более 4000 символов, это может интерпретировать это как LONG вместо VARCHAR2 при вставке. Добавление подстроки исправило это для нас

entity.setColVal(colVal == null||colVal.length() < 4000 ? colVal : colVal.substring(0,4000));

Или вы можете использовать StringUtils.substring(colVal, 0, 4000);, если хотите, чтобы вам не приходилось самостоятельно проверять нулевое значение и длину.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...