In a Grails domain class, how do I set the constraint for a String field so that its MySQL column type is TEXT or LONGTEXT?
So far my best approach is to set the constraint's size:
myTextField(size:0..65535)
which results in TEXT
myTextField(size:0..2147483646)
results in LONGTEXT (2147483646 = 2^32 / 2 - 1 - 1)
Is there a cleaner way to specify the size? Basically I want the full range of TEXT or LONGTEXT without having to hardcode a bunch of size values.
You can declare that in the mapping closure of your Domain class:
static mapping = { myTextField type: 'text' }
(See ORM DSL Documentation)
using sqlType would allow you to go for finer grained constraint
Class Foo{ String myTxtAsVarchar String myTxtAsText String myTxtAsLtext static mapping = { myTxtAsVarchar sqlType: 'varchar(255)' myTxtAsText sqlType: 'text' myTxtAsLtext sqlType: 'longText' } /*applying constraint on DB end + on Domain model(scaffolding/Validation)*/ static constraints = { myTxtAsVarchar size: 2..255 myTxtAsText size: 2..15000 } }
using SQL type also made available actual Blob type (byte type linked to tinyBlob by default)
more mapping detailed here: https://grails.github.io/grails-doc/latest/ref/Database%20Mapping/column.html
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