2009-09-07 3 views
7

나는 Oracle DB에 pdf 보고서를 저장해야합니다. 보고서의 dataType은 byteArray입니다. 다음과 같이Groovy 도메인 매핑

도메인의 정의는 다음과 같습니다

static constraints = { 
report(nullable:false) 
company(nullable:false)  
month(nullable:false)  
} 

byte[] report 
Company company 
Date month 

}

불행하게도이 오라클 DB에서 정의하는 RAW DATA_TYPE 255

어떻게해야의 lenghth이있는 필드 이 필드를 도메인 클래스에 정의합니까? BLOB로 정의해야합니까?

예, 그렇다면 어떻게해야합니까? 사전에

감사합니다.

답변

7

255는 바이트 []에 제공된 기본 크기입니다. 요구 사항에 따라 제약 조건에서 보고서의 최대 크기를 지정하십시오. 예 :

static constraints = { 
    report(maxSize: 50000000) 
} 

DB의 필드 유형이 설정됩니다.

import java.sql.Blob 

import org.hibernate.lob.BlobImpl 

class Pagina { 

    Blob reportBlob 

    static mapping = { 
     reportBlob column: 'PAGI_TX_DADOS', type: 'blob' 
    } 

    def setReport(byte[] bytes) { 
     if (bytes != null) { 
      ByteArrayInputStream bais = new ByteArrayInputStream(bytes) 
      int length = bytes.length 
      reportBlob = new BlobImpl(bais,length)  
     } 
    } 

    def getReport() { 
     return reportBlob?.binaryStream 
    } 

} 
: (MEDIUMBLOB는 LONGBLOB 등) 마이클 Borgwardt의 답변에 따라
1

명시 적으로 도메인 클래스에 다음과 같은 예를 들어 당신이 추가 할 수는 '덩어리'또는 '진'하나에 유형을 설정 해보십시오 : 여기

static mapping = { 
    report type:'blob' 
} 
1

이 문제를 해결하기 위해 약속 blog article입니다. 트릭은 유형 java.sql.Blob의 필드를 가지며이 필드는 byte[] 필드에서 파생되어 일시적으로 표시됩니다.

1

, 여기에 나는이 문제를 해결하기 위해 무슨 짓
관련 문제