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.
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.)
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'
}
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With