반응형
Could not write content: Direct self-reference leading to cycle, ArrayList와 Hashmap관련된 에러가 떴다. 이건 전에도 겪어본 적 있는데, json을 호출하는 @responsebody 어노테이션이 꼬리에 꼬리를 물게 되면 발생했던 에러다. 근데 이번엔 CLOB to String 변환 과정에서 발생하는 것 같았다. WARN 텍스트에 CLOB 데이터가 있었거든.. CLOB이 그리 녹록치 않은 놈이라는 건 이미 오래오래전에 겪어보았다.
방법을 몇가지 찾아보았는데 java api를 쓰는 방법은 내가 프로젝트에서 쓰는 방식이 아니라 적용하기 너무 어려울 것 같았다(는 사실을 30분은 지나고서야 알게 됨)
오라클 sql구문에서 DBMS_LOB.SUBSTR() 을 이용하면 CLOB을 VARCHAR2 타입으로 변환할 수 있다고 해서 적용하고 바로 성공했다. 내 경우엔 View에 적용해서, 코드가 좀 길다.. 중간에 4000, 1 숫자가 보이는 부분이 적용한 부분이다.
create or replace view matchupMemSearchView
as
select rownum as RNUM, A.*
from
(
select m.mcumem_no as MCUMEMNO, m.resume_no AS RESUMENO, m.mem_no AS MEMNO, m.expertise_no AS EXPERTISENO,
m.jobsearch_flag AS JOBSEARCHFLAG, m.resumeopen_flag AS RESUMEOPENFLAG, r.resume_title AS RESUMETITLE,
r.resume_name AS RESUMENAME, DBMS_LOB.SUBSTR(r.resume_introduce, 4000, 1) AS RESUMEINTRODUCE, r.lang_flag AS LANGFLAG,
c.career_name AS CAREERNAME, e.edu_name AS EDUNAME, e.edu_major AS EDUMAJOR,
x.jikGun_code AS JIKGUNCODE, x.career AS CAREER, x.skill AS SKILL,
(select jikmu_name from jikmu j where j.JIKMU_CODE=
(select jikmu_code from matchupmemjikmu mjm where mjm.expertise_no=m.expertise_no)) as JIKMUNAME,
(select jikgun_name from jikgun jk where jk.jikgun_code=
(select jikgun_code from expertise e where e.expertise_no=m.expertise_no)) as JIKGUNNAME
from matchupMem m join resume r on m.resume_No = r.resume_no
left outer join career c on c.resume_no=m.resume_no
left outer join education e on e.resume_no=m.resume_no
left outer join expertise x on x.expertise_no=m.expertise_no
where m.resumeopen_flag='Y'
order by m.mcumem_no
)A;
출처: https://forgiveall.tistory.com/426 [하하하하하]
감사합니다.
728x90
반응형
'DataBase > SQL' 카테고리의 다른 글
[SQLD] 개념 정리 #04 이것저것 1탄 (0) | 2021.03.17 |
---|---|
[SQLD] 개념 정리 #03 정규화 과정 (0) | 2021.03.11 |
[SQLD] 개념 정리 #02 데이터베이스의 정규화 (0) | 2021.03.11 |
[SQLD] 개념 정리 #01 시스템 카탈로그, 식별 관계/비식별 관계 (4) | 2021.03.10 |
[ORACLE] 파이널 프로젝트 매치업 조회부분 sql 쿼리 짠 것 (0) | 2021.02.05 |