grails中blank和nullable的区别

声明约束属性时,blank和nullable好像都能限制非空,那么下面两个语句的区别在哪里:
name(blank:false)
dateOfBirth(nullable:false)
一:
我也是刚接触grails,但最近做项目想明白了。
blank用于约束String数据,nullable用于约束对象
name是String类型,所以用blank,dateOfBirth声明时用的是new Date(),因此用nullable

二:

不赞同4楼的回复。我给你举个例子:
    String name1
    String name2
    String name3
    String name4
    static constraints =
        
        name1(nullable:false,blank:false)
        name2(nullable:false,blank:true)
        name3(nullable:true,blank:false)
        name4(nullable:true,blank:true)
    }
映射到数据库的DDL语句为:
CREATE TABLE `test` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`version` bigint(20) NOT NULL,
`name1` varchar(255) NOT NULL,
`name2` varchar(255) NOT NULL,
`name3` varchar(255) DEFAULT NULL,
`name4` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
看到其中的差别了么?
而且此时页面校验要求只有name1是必填的。

如果还不能理解,附带这两个sql,你看下效果:
select * from test where name3 = '';
select * from test where name3 is null;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值