LANGUAGE/!$%!% ERROR NOTE 2017. 1. 30. 18:58

!markdown


### Error (오류)


```

com.fasterxml.jackson.databind.JsonMappingException: Direct self-reference leading to cycle (through reference chain: java.util.LinkedHashMap["rows"]->java.util.ArrayList[0]->java.util.LinkedHashMap["HELLO_CLOB"]->oracle.sql.CLOB["dbaccess"]->oracle.jdbc.driver.T4CConnection["wrapper"])

```



### Problem (문제)

우선 원인은 원하는 데이터를 JSON으로 만들어서 보내면서 문제가 야기된 것이다.


하지만, 나의 경우는 궁극적으로 CLOB데이터가 JAVA에서 String으로 변환되었을 것이라 착각한 것이 크다.


Oracle Database로부터 CLOB데이터를 받아왔는데 


JAVA에서 String으로 취급하는게 아니라 `CLOB이라는 Class로 취급하기 때문에 `


Front단으로 데이터를 전송할때, Class내에 있는 `복잡한 필드구조를 JSON구조로 변화시키면서, 예기치 못한 일이 발생`한 것이다.


즉, CLOB데이터가 String일 것이라 착각한 것이 오류이다.




### Solved (해결)


#### 1. 정확히 어떻게 JSON으로 변하는지 따져보거나 Log찍어 확인


또는, 상황에 따라서는  `@JsonIgnore 어노테이션`을 이용하여 `JSON으로 변경시 무시`(없는 데이터 취급)하면 될 것이다. 



나의 경우에는 Clob데이터를 String으로 바꿔줘야 하는 문제이다.



#### 2. Clob To String


- 방법 1. Oracle DataBase Sql구문상에서 `DBMS_LOB.SUBSTR()`을 이용하여 CLOB을 VARCHAR2로 변환하여 SELECT한다.


```sql

SELECT DBMS_LOB.SUBSTR(PROPERTY_LVAL, 2000, 1) as value

FROM MOBJ_DESC

```


- 방법 2. JAVA로 받아온 CLOB데이터를 STRING으로 바꾼다. (소스는 Groovy이다. JAVA와 비슷하니 참고 할 수 있다.)


```java

String clobToString(Clob clob) throws IOException{
String result = ""
if (clob){
StringBuffer strBuffer = new StringBuffer()
BufferedReader reader = new BufferedReader(clob.getCharacterStream())
while ((result = reader.readLine()) != null){
strBuffer.append(result)
}
result = strBuffer.toString()
}
return result
}

```




### Reference (참고)


HashMap 을 통하여 Clob 를 받을 경우 String 으로 변환: [http://thebad.tistory.com/entry/HashMap-%EC%9D%84-%ED%86%B5%ED%95%98%EC%97%AC-Clob-%EB%A5%BC-%EB%B0%9B%EC%9D%84-%EA%B2%BD%EC%9A%B0-String-%EC%9C%BC%EB%A1%9C-%EB%B3%80%ED%99%98](http://thebad.tistory.com/entry/HashMap-%EC%9D%84-%ED%86%B5%ED%95%98%EC%97%AC-Clob-%EB%A5%BC-%EB%B0%9B%EC%9D%84-%EA%B2%BD%EC%9A%B0-String-%EC%9C%BC%EB%A1%9C-%EB%B3%80%ED%99%98)


[오라클] CLOB -> VARCHAR로 변환: [http://dev4u.tistory.com/entry/%EC%98%A4%EB%9D%BC%ED%81%B4-CLOB-VARCHAR%EB%A1%9C-%EB%B3%80%ED%99%98](http://dev4u.tistory.com/entry/%EC%98%A4%EB%9D%BC%ED%81%B4-CLOB-VARCHAR%EB%A1%9C-%EB%B3%80%ED%99%98)