Groovyのドメインマッピング
-
21-09-2019 - |
質問
私は、Oracle DBにPDFレポートを保存する必要があります。 レポートのデータ型は、ByteArrayのです。
次のようにドメインの定義は次のとおりです。
static constraints = {
report(nullable:false)
company(nullable:false)
month(nullable:false)
}
byte[] report
Company company
Date month
}
は、Oracle DBで残念ながら、この定義フィールド これはA RAWのDATA_TYPEと255のlenghthを持っています。
どのように私は、ドメインクラスには、このフィールドを定義する必要がありますか? BLOBとして定義されるべきか?
YESの場合、これを行うには?
事前に感謝します。
解決
255] [バイトに提供されるデフォルトのサイズです。あなたの要件ごとなどの制約でレポートの最大サイズを指定します。ような何かます:
static constraints = {
report(maxSize: 50000000)
}
は最大サイズに基づいて、DB内のフィールドタイプが設定されます。 (MEDIUMBLOB、LONGBLOBなど)
他のヒント
明示的にたとえば、あなたがドメインクラスに以下を追加することができ、「ブロブ」または「バイナリ」のいずれかにタイプを設定してみてください
static mapping = {
report type:'blob'
}
マイケルBorgwardtの回答に基づいて、ここで私は、この問題を解決するためにやったことです。
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
}
}
所属していません StackOverflow