41

Grails ドメイン クラスで、MySQL カラム タイプが TEXT または LONGTEXT になるように String フィールドの制約を設定するにはどうすればよいですか?

これまでのところ、私の最善のアプローチは、制約のサイズを設定することです:

myTextField(size:0..65535)

結果はTEXTになります

myTextField(size:0..2147483646)

結果は LONGTEXT (2147483646 = 2^32 / 2 - 1 - 1)

サイズを指定するよりクリーンな方法はありますか? 基本的に、サイズ値の束をハードコードすることなく、TEXT または LONGTEXT の全範囲が必要です。

4

2 に答える 2

5

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

于 2016-03-26T14:26:28.447 に答える