2011-03-04 8 views
0

의 JDK 1.6를 사용하여 승/3.2.7 최대 절전 모드, 인스턴스를 병합, 오라클 10g (ojdbc14.jar를)자바 : 오라클 CLOB 데이터가 최대 절전 모드

나는 CLOB를 포함하는 (엔티티) 클래스가 있습니다. RESTful 호출을 통해 나는 clob의 내용이 될 문자열을 전달한다. 나중에 끈기를 위해 문자열을 먹이로 채우는 데 문제가 있습니다. 여기에 클래스 .... 직렬화 후, 내가 다오의 병합 문에있어

 try { 
     String jsonStr = msoNode.path("features_json").getTextValue(); 
     SerialClob clob = new SerialClob(jsonStr.toCharArray()); 
     mso.setFeaturesJson(clob); 
    } catch (Exception e) { 
     log.error("MyClassDeserializer.deserialize(): Exception deserializing the features JSON." + e.getMessage()); 
    } 

public class MyClass implements java.io.Serializable { 
private static final long serialVersionUID = 5507279748316866736L; 
private long id; 
private String name; 
private String description; 
private java.sql.Clob featuresJson; 
...etc... 
여기

역 직렬화 코드가있어이 ... ...의

MyClass savedOverlay = myClassDao.merge(overlay); 

"overlay"는 비 직렬화 된 "MyClass"인스턴스입니다. 이 시점에서 나는 clob 내부를 들여다보고 데이터를 볼 수 있습니다. 그러나 반환 된 인스턴스에는 clob 필드가 null로 설정되어 있으며 데이터베이스의 clob 열도 null입니다!

비 직렬화 코드의 문제점은 무엇입니까? 나는 다른 몇 가지 시도를했지만 매번 실패 할 때마다 (적어도 일관성이있다!)

답변

1

해결!

열에 지정해야하는 주석 @Lob이 있습니다. 또한 java.sql.Clob 유형으로 리버스 엔지니어링 된 동일한 컬럼을 String으로 변경해야했습니다.

+0

듣기 좋게 들립니다. 이 대답의 위쪽/아래쪽 화살표 옆에있는 짙은 체크 표시를 클릭하여 자신의 대답을 수락 할 수 있습니다. –