声明约束属性时,blank和nullable好像都能限制非空,那么下面两个语句的区别在哪里:
name(blank:false)
dateOfBirth(nullable:false)
一:
我也是刚接触grails,但最近做项目想明白了。
blank用于约束String数据,nullable用于约束对象
name是String类型,所以用blank,dateOfBirth声明时用的是new Date(),因此用nullable
二:
不赞同4楼的回复。我给你举个例子:
映射到数据库的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;