views:

460

answers:

3

Hi! I have a to save a pdf report into an Oracle DB. The report's dataType is a byteArray.

The domain definition is as follows:

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

byte[] report
Company company
Date month

}

Unfortunately this defines in the Oracle DB a field which has A RAW data_type and a lenghth of 255.

How should I define this field into the domain class? Should be defined as a BLOB?

If yes, How to do this?

Thanks in advance.

A: 

Try explicitly setting the type to either a 'blob' or 'binary', for example you can add the following to the domain class:

static mapping = {
    report type:'blob'
}
John Wagenleitner
A: 

Here's a blog article that promises to solve this problem. The trick seems to be to have a field of type java.sql.Blob, with the byte[] field derived from that and marked as transient.

Michael Borgwardt
+4  A: 

255 is the default size provided to a byte[]. Specify the max size for report in constraints as per your requirement. Something like:

static constraints = {
    report(maxSize: 50000000)
}

Based on max size, the field type in DB will be set. (mediumblob, longblob etc.)

Aman Aggarwal