Grailsドメインクラスで、MySQLカラムタイプがTEXTまたはLONGTEXTになるようにStringフィールドの制約を設定するにはどうすればよいですか?
これまでのところ、私の最善のアプローチは、制約のサイズを設定することです。
myTextField(size:0..65535)
結果はTEXTになります
myTextField(size:0..2147483646)
結果はLONGTEXT(2147483646 = 2 ^ 32/2-1-1)
サイズを指定するためのより明確な方法はありますか?基本的に、一連のサイズ値をハードコーディングすることなく、TEXTまたはLONGTEXTの全範囲が必要です。
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