Tibero DB에서 SELECT문으로 데이터를 불러오는 기능을 만들고 있었는데 갑자기 보기 드문 오류가 발생했다.
com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for class com.tmax.tibero.jdbc.TbClobReader and no properties discovered to create BeanSerializer
가져온 map을 출력해 봤는데, content 요소의 값이 문자열이 아닌 Clob 형태여서 json 형식으로 변환할 수 없다는 것 같다.
해결 방법으로는 mapper에서 resultMap을 만들어 주면 된다.
예를 들어, 쿼리가 다음과 같고 content 컬럼의 datatype이 clob이면 다음과 같이 resultMap을 만들어서 해당 select문의 resultMap 속성에 추가하면 된다.
<!-- 1. resultMap을 만들어 준다. -->
<resultMap type="EgovMap" id="minwonTableList">
<result property="sno" column="sno" />
<result property="title" column="title" />
<result property="content" column="content" jdbcType="CLOB" javaType="java.lang.String" />
<result property="dept" column="dept" />
<result property="status" column="stat" />
<result property="pname" column="pname" />
<result property="rdate" column="rdate" />
</resultMap>
<!-- 2. 쿼리에 해당 resultMap의 ID를 속성에 추가한다. -->
<select id="selectMinwonTableList" parameterType="EgovMap" resultType="EgovMap" resultMap="minwonTableList">
SELECT CNSL_QNA_NO SNO, MW_CNSL_SJ TITLE, SUBSTR(MW_APPL_CN, 0, 500) CONTENT, CNSL_DEP_NM DEPT,
DEAL_STATE_NM STATUS, ANS_USR_NM PNAME, TO_DATE(REG_DT, 'YYYY-MM-DD HH24:MI:SS') RDATE
FROM ...
</select>
'Backend > Spring' 카테고리의 다른 글
Spring - 쿠키 생성/삭제/가져오기 (0) | 2021.12.09 |
---|---|
Spring - session 정보 DB에 저장 (2) | 2021.10.28 |
Spring 복습 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 (0) | 2021.08.28 |
Eclipse - Hot reload(Hot deploy) 설정 (0) | 2021.08.22 |