hibenate 맵 clob 필드

3073 단어
hibenate 맵 clob 필드
항목 에 긴 텍스트 를 내용 으로 사용 합 니 다.
pojo 에서 string 형식 사용 하기
데이터베이스 oracle9i 용 clob 필드
pojo:


private
 String content;
public
 
void
 setContent(String content){     
this
.content 
=
 content; }
hibenate 설정
<
property 
name
="content"
 column
="C_Content"
 type
="text"
 length
="10000"
>property
>
content 필드 의 내용 이 1000 ~ 2000 문자 길이 중간 에 있 을 때 나타 납 니 다.
sql
잘못
텍스트 길이 가 1000 보다 작 으 면 2000 보다 길다.
문제
질문: hibenate 설정 에서 length = "10000" 속성 은 무엇 에 사용 합 니까?나 는 그 를 1000, 5000, 1w 로 설정 하거나 마지막 으로 실행 하 는 결 과 를 설정 하지 않 으 려 고 시도 해 보 았 다.
조사 하 다.
자료: google baidu...
일반적으로 length 가 지정 한 것 은 text 의 최대 길이 라 고 생각 하 는데, 여 기 는 분명히 그렇지 않다.
또한 자바 의 string 값 을 clob 로 처리 하 는 최소 길이 라 고 생각 합 니 다. 즉, string 길이 가 이 값 보다 작 을 때 string 으로 처리 하고 string 이 이 길이 보다 클 때 text (clob) 로 처리 합 니 다.그러나 length 를 1000 으로 설정 할 때 1k + 텍스트 를 입력 하 는 데 sql 오류 가 있 습 니 다.2000 이 넘 는데 문제 없어.
소.. 이 두 가 지 는 모두 답 이 아 닙 니 다.
또 어떤 사람 은
jdbc 의
bug 를 10g 으로 바 꾸 면 쌀 에 문제 가 있 습 니 다.결국 시도 해 보 았 지만.. 결과 가 없 었 고 문 제 는 여전 했다.
finally.. 이 length 속성 은 도대체 왜 사용 하 는 지 모 르 겠 습 니 다. 아니면 이렇게 설정 하지 말 아야 합 니까?
계속 찾 아 다른 해결 방법 을 찾 아 라.스프링 을 통 해서 이 문 제 를 해결 할 수 있어 요.
hibenate 설정
<
property 
name
="content"
 column
="C_Content"
 type
="org.springframework.orm.hibernate3.support.ClobStringType"
length
="10000"
>property
>
spring 설정
<
bean 
id
="oracleLobHandler"
 class
="org.springframework.jdbc.support.lob.OracleLobHandler"
>
            
<
property 
name
="nativeJdbcExtractor"
>
            
<
ref 
local
="nativeJdbcExtractor"
/>
        
property
>
  
bean
>
   
<
bean 
id
="nativeJdbcExtractor"
 class
="org.springframework.jdbc.support.nativejdbc.SimpleNativeJdbcExtractor"
>
   
bean
>
위 에 두 개의 bean 이 관건 이에 요.
그리고 session Factory 의 bean 에 들 어 갑 니 다.
<
bean 
id
="sessionFactory"
        class
="org.springframework.orm.hibernate3.LocalSessionFactoryBean"
>
        
<
property 
name
="lobHandler"
>
                
<
ref 
bean
="oracleLobHandler"
 
/>
            
property
>
        。。。기타
bean
>
문제 해결, 그러나 length = "10000" 속성 은 여전히 쓸모 가 없 으 며, 임의의 길이 의 문자열 을 정상적으로 삽입 할 수 있 습 니 다.
하지만 이렇게 되면 데이터 베 이 스 는 플랫폼 을 뛰 어 넘 을 수 없습니다. so 는 데이터베이스 플랫폼 을 뛰 어 넘 는 방안 을 기대 합 니 다 ~ ~

좋은 웹페이지 즐겨찾기