Ответ 1
Вы можете объявить, что в закрытии отображения вашего класса домена:
static mapping = {
myTextField type: 'text'
}
(См. Документация ORM DSL)
В классе домена Grails, как установить ограничение для строкового поля, чтобы его тип столбца MySQL был TEXT или LONGTEXT?
До сих пор мой лучший подход - установить размер ограничения:
myTextField(size:0..65535)
что приводит к TEXT
myTextField(size:0..2147483646)
приводит к LONGTEXT (2147483646 = 2 ^ 32/2 - 1 - 1)
Есть ли более чистый способ указать размер? В принципе, я хочу, чтобы весь диапазон TEXT или LONGTEXT не требовал жесткого кодирования множества значений размера.
Вы можете объявить, что в закрытии отображения вашего класса домена:
static mapping = {
myTextField type: 'text'
}
(См. Документация ORM DSL)
Использование sqlType позволит вам перейти на более мелкое ограничение
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
}
}
используя тип SQL, также доступен доступный фактический тип BLOB (по умолчанию байтовый тип связан с tinyBlob)
более подробное описание здесь: https://grails.github.io/grails-doc/latest/ref/Database%20Mapping/column.html