ORA-22835 저는 이 방식으로 해결하였습니다
맵으로 그냥 받는 경우, clob 객체가 찍힙니다. resultMap에서 String으로 치환해서 받아서 처리하였습니다.
<resultMap id="getMapDetail" type="dbMap">
<result column="M_CONT" property="mCont" javaType="java.lang.String" jdbcType="CLOB"/>
</resultMap>
<select id="selectDetail" parameterType="dataMap" resultMap="getMapDetail">
....
</select>
CLOB를 RESULTMAP에 담는 경우
RESULTMAP은 MyBatis에서 사용하는 개념 중 하나입니다. MyBatis는 데이터베이스에서 조회한 결과를 자바 객체로 변환하는 데에 ResultMap을 사용합니다. ResultMap을 정의하면 데이터베이스의 결과를 매핑하여 자바 객체로 변환할 수 있습니다.
만약 CLOB 데이터를 ResultMap을 사용하여 자바 객체에 매핑하려면, 일반적으로 다음과 같은 방법을 사용할 수 있습니다. 아래 예제는 MyBatis에서의 ResultMap을 사용한 CLOB 데이터 매핑의 간략한 예시입니다.
1. MyBatis XML 파일에서 ResultMap 정의
<!-- resultMap 정의 -->
<resultMap id="yourResultMap" type="YourJavaObject">
<!-- 다른 필드 매핑 -->
<id property="id" column="id_column" />
<!-- CLOB 매핑 -->
<result property="clobData" column="clob_column" jdbcType="CLOB" javaType="java.lang.String" />
</resultMap>
2. SQL Mapper XML에서 ResultMap 사용
<!-- 조회 쿼리 -->
<select id="selectYourData" resultMap="yourResultMap">
SELECT id_column, clob_column
FROM your_table
WHERE ...
</select>
3. 자바 객체 정의
public class YourJavaObject {
private Long id;
private String clobData;
// 게터, 세터, 기타 메서드
}
이렇게 정의된 ResultMap을 사용하여 CLOB 데이터를 자바 객체에 매핑할 수 있습니다. ResultMap을 사용하면 데이터베이스 결과의 각 열을 자바 객체의 필드에 매핑할 수 있으며, 이를 통해 CLOB 데이터를 원하는 형식으로 가져올 수 있습니다.
CLOB를 치환해서 사용하는 경우
이 오류는 Oracle에서 CLOB를 다른 데이터 타입으로 변환할 때 발생하는 문제입니다.
CLOB의 크기가 변환 대상의 최대 크기를 초과하고 있기 때문에 발생합니다.
CLOB는 큰 문자열 데이터를 저장할 수 있는 데이터 타입이며, CHAR, BLOB, RAW 등과 같은 다른 데이터 타입으로 변환할 때는 주의가 필요합니다.
이 문제를 해결하기 위해서는 CLOB의 크기를 축소하거나, 변환 대상의 데이터 타입을 변경해야 합니다.
다만, 데이터 손실이 발생할 수 있으므로 주의가 필요합니다.
1. CLOB 크기 축소하기
CLOB에 저장된 데이터가 4000자 이하라면, VARCHAR2로 타입을 변경하면 문제를 해결할 수 있습니다.
SELECT TO_CHAR(CLOB_COLUMN) FROM YOUR_TABLE; -- TO_CHAR 함수로 VARCHAR2로 변환
이 경우, 데이터 손실 없이 CLOB을 VARCHAR2로 변경할 수 있습니다.
2. CLOB 데이터 일부만 사용하기
실제로 필요한 데이터만 가져와서 사용할 수도 있습니다.
SELECT DBMS_LOB.SUBSTR(CLOB_COLUMN, 4000, 1) FROM YOUR_TABLE; -- 일부 데이터만 사용
이렇게 하면 일부 데이터만 가져와서 사용할 수 있습니다.
3. CLOB을 BLOB으로 변환하기
만약 텍스트 데이터가 아니라 이진 데이터인 경우, BLOB으로 변환할 수 있습니다.
SELECT UTL_RAW.CAST_TO_RAW(CLOB_COLUMN) FROM YOUR_TABLE; -- CLOB을 BLOB으로 변환
이 경우, 이진 데이터를 사용할 수 있습니다.
'study > ERROR CASE' 카테고리의 다른 글
Invalid byte tag in constant pool: 19 (1) | 2024.07.02 |
---|---|
미드저니 이미지 생성 요청시 오류 발생 (0) | 2024.02.05 |
CUBRID 엑셀업로드 파일을 분석할 수 없습니다. (0) | 2024.01.26 |
Downloading external resources is disabled (0) | 2024.01.22 |
MyBatis unread at MARIA, SPRING (0) | 2024.01.16 |