空白和空约束之间的差异

时间:2015-03-23 04:04:02

标签: grails gorm

空白和空约束之间有什么区别?

我有以下课程

class Task {

    String title
    String notes
    TekUser assignedTo
    Date dueDate
    TekEvent event

    static constraints = {
        title blank:false
        notes blank: true , maxSize: 5000
        assignedTo nullable:true
        dueDate nullable:true
    }

    static belongsTo = TekEvent
}

并且即使我指定了notes blank : true

,创建的mysql表也将注释设置为not null

空白有什么影响:真的有吗?

3 个答案:

答案 0 :(得分:14)

  • blank:true表示该字段接受空字符串或仅由空格组成的字符串作为有效值。例如:""" "
  • nullable:true表示该字段接受null作为有效值

它们可以一起使用。例如:

title blank:false, nullable: true

答案 1 :(得分:6)

虽然aruizca的答案是正确和描述性的,但我在阅读本书时发现了这一点:" 编程Grails "作者:Burt Beckwith。

  

空白与空缺   在许多情况下,空字符串和null是   等价 - 没有设定值。但是来自网络的HTTP提交   浏览器POST请求为没有值的输入发送空字符串。   非HTTP数据不会出现这种情况,例如来自其他数据   外部客户端,如Web服务或测试期间,所以转换   HTTP层的空白空白将有助于简化验证。而   我们在这里,我们也可以修剪提交的额外空格   值。

这可能与您的问题无关。 Aruizca的答案就是您所需要的,但这可以是关于Blanks和Nulls的其他信息。

答案 2 :(得分:1)

另一个答案都是正确的,但要解决你的问题:

  

创建的mysql表将注释设置为非null,即使我   指定的注释空白:true

     

空白有什么影响:真的有吗?

blank: false保护在该字段上设置的空值(例如"",""等)。这与mysql上具有约束NOT NULL的字段无关。发生这种情况是因为Grails在每个字段上限制默认nullable: false,除非您明确将其设置为nullable: true