【问题标题】:Grails domain class, String field TEXT and LONGTEXTGrails 域类、String 字段 TEXT 和 LONGTEXT
【发布时间】:2010-09-30 19:44:35
【问题描述】:

在 Grails 域类中,如何设置 String 字段的约束,使其 MySQL 列类型为 TEXT 或 LONGTEXT?

到目前为止,我最好的方法是设置约束的大小:

myTextField(size:0..65535)

导致文本

myTextField(size:0..2147483646)

结果为 LONGTEXT (2147483646 = 2^32 / 2 - 1 - 1)

有没有更简洁的方法来指定尺寸?基本上我想要完整的 TEXT 或 LONGTEXT 范围,而不必硬编码一堆大小值。

【问题讨论】:

    标签: grails


    【解决方案1】:

    您可以在 Domain 类的映射闭包中声明:

    static mapping = {
       myTextField type: 'text'
    }
    

    (见ORM DSL Documentation

    【讨论】:

      【解决方案2】:

      使用 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

      【讨论】:

        猜你喜欢
        • 2012-09-20
        • 2016-12-09
        • 2010-10-13
        • 1970-01-01
        • 2013-08-13
        • 2012-06-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多