ORA-03146: TTC 필드에 대한 버퍼 길이가 부적합합니다.
오라클 버그인지 모르지만 CLOB 필드에 바로 데이터 저장 시 TTC 오류 발
처음 insert시 들어가는 CLOB 필드에 EMPTY_CLOB()으로 빈 CLOB 데이터를 넣어주고,
해당 row의 PK값으로 실제 content UPDATE 시켜줌
<insert id="save" parameterType="com.eun.tutorial.dto.ZthhBoardDTO">
MERGE INTO zthh_board
USING DUAL
ON ( board_id = #{boardId, jdbcType=VARCHAR, javaType=string} )
WHEN MATCHED THEN /* ON 조건에 해당되는 것이 있으면 아래 실행(UPDATE) */
UPDATE SET
title = #{title, jdbcType=VARCHAR}
,update_id = #{updateId, jdbcType=VARCHAR}
,update_time = to_char(sysdate,'yyyymmddhh24miss')
,content = #{content, mode=IN, jdbcType=CLOB, javaType=string}
WHEN NOT MATCHED THEN /* ON 조건에 매칭되지 않으면 아래 실행(Insert)*/
INSERT (BOARD_ID, TITLE,
create_id, create_time, update_id, update_time, CONTENT)
VALUES (#{boardId, jdbcType=VARCHAR, javaType=string},
#{title, jdbcType=VARCHAR},
#{createId, jdbcType=VARCHAR},
to_char(sysdate,'yyyymmddhh24miss'),
#{updateId, jdbcType=VARCHAR},
to_char(sysdate,'yyyymmddhh24miss'),
EMPTY_CLOB())
</insert>
@Override
public int save(ZthhBoardDTO zthhFileAttachDTO) {
UUID uuid = UUID.randomUUID();
String boardId = "board_"+uuid;
zthhFileAttachDTO.setBoardId(boardId);
// 1. insert EMPTY_CLOB()
zthhBoardMapper.save(zthhFileAttachDTO);
// 2. update 실제 content
return zthhBoardMapper.save(zthhFileAttachDTO);
}