Я пытаюсь вставить список записей в базу данных oracle, используя mybatis orm.
Ниже выдается исключение при вставке в базу данных.
Ошибка обновления базы данных. Причина: java.sql.SQLException: ORA-01461: может связывать значение LONG только для вставки в столбец LONG
Запрос, который я написал для вставки данных.
<insert id="insertCusHistoryData" parameterType="com.dpworld.tos.admin.model.CusHistory">
INSERT INTO
CUS_ACTION_HISTORY_T(SEQ_NO, GLOBAL_ID, REQUEST_ID, CUS_ACTION_CODE, CUS_REQUEST_TIME, ENTITY_TYPE, ENTITY_KEY, PARENT_ENTITY_KEY,
DELTA_CHANGE, TOTAL_PROCESSING_TIME, TOTAL_SERVER_PROCESSING_TIME, USER_AN, UPDATE_MODE, TOTAL_TIME)
select A.* from(
<foreach collection="cusHistory" item="history" separator="UNION ALL" >
SELECT
#{history.sequenceNo} as SEQ_NO,
#{history.globalId} as GLOBAL_ID,
#{history.requestId} as REQUEST_ID,
#{history.cusActionCode} as CUS_ACTION_CODE,
#{history.cusRequestTime} as CUS_REQUEST_TIME,
#{history.entityType} as ENTITY_TYPE,
#{history.entityKey} as ENTITY_KEY,
#{history.parentEntityKey} as PARENT_ENTITY_KEY,
#{history.deltaChange, jdbcType=CLOB},
#{history.totalProcessingTime} as TOTAL_PROCESSING_TIME,
#{history.totalServerProcessingTime} as TOTAL_SERVER_PROCESSING_TIME,
#{history.userAn} as USER_AN,
#{history.updateMode} as UPDATE_MODE,
#{history.totalTime} as TOTAL_TIME
FROM DUAL
</foreach>)A
Но когда я изменяю код вставки, как показано ниже, он вставляет свойство, но это занимает около 23 секунд до завершения задания.
BEGIN
<foreach collection="cusHistory" item="history" separator="" >
INSERT INTO
CUS_ACTION_HISTORY_T(SEQ_NO, GLOBAL_ID, REQUEST_ID, CUS_ACTION_CODE, CUS_REQUEST_TIME, ENTITY_TYPE, ENTITY_KEY, PARENT_ENTITY_KEY,
DELTA_CHANGE, TOTAL_PROCESSING_TIME, TOTAL_SERVER_PROCESSING_TIME, USER_AN, UPDATE_MODE, TOTAL_TIME)
VALUES(
#{history.sequenceNo},
#{history.globalId},
#{history.requestId},
#{history.cusActionCode},
#{history.cusRequestTime},
#{history.entityType},
#{history.entityKey},
#{history.parentEntityKey},
#{history.deltaChange, jdbcType=CLOB},
#{history.totalProcessingTime},
#{history.totalServerProcessingTime},
#{history.userAn},
#{history.updateMode},
#{history.totalTime});
</foreach>
END;
Я попытался удалить столбец CLOB из первого и второго запроса, первый запрос занял около 8 секунд, а второй запрос занял около 20 секунд, в этом случае возникает огромная проблема с производительностью.
Пожалуйста, совет.