grails在有数据的表中新增字段,如何为新增字段赋初值?
有没有人做过对有数据的表中增加一字段,通过grails的domain对应新增字段的属性设定数据库表的默认值,怎么设置。我这边不论怎么设置,新增的domain属性,在有数据的表中其字段的值永远都是(null),可我想要我设定的默认值我该怎么做?
如某domain中定义新增的属性
int synDelType = 0;
数据库对应的表中列syn_del_type的值一直都是(null)
注:是在有数据的表,新加属性重新启动工程对新加列赋初值,不是在new 或者 update的时候赋初值
因为新加这个字段,就是为了给以前老数据新增的字段赋初值。 grails domain 数据库 null --------------------编程问答-------------------- 应该是这样吧int synDelType = [0]
楼主可以去看看groovy语言,像“;”符号是可以不写的
static constraints闭包设置约束
static mapping闭包设置映射
static constraints = {--------------------编程问答-------------------- ";"可写可不写,这个到不是问题,你说的
id(blank: false)
registName(blank: false)
registPassword(blank: false)
personalName(blank: false)
personalTel(blank: false)
registDate(blank: false)
//单位名称
unitName(nullable: true)
//单位地址
unitAddress(nullable: true)
//单位电话
unitTel(nullable: true)
//单位传真
unitFax(nullable: true)
//单位网址
unitUrl(nullable: true)
//您的手机号码
personalMobile(nullable: true)
//您的QQ或MSN
personalQQ(nullable: true)
memberType(blank: false, inList: ['工程类', '货物类', '服务类'])
shenhe(inList:['待审核','已审核','未审核'])
}
static mapping = {
id generator: 'uuid.hex'
}
String toString() {
this.personalName
}
static constraints闭包设置约束
static mapping闭包设置映射
这些在新表内设置都没有问题,我在如题中讲到,是在老表中新加字段。不论我这边在domain中怎么做设置约束,都不能得到预期结果,很是纠结。 --------------------编程问答--------------------
重新生成表试试 --------------------编程问答-------------------- 我前面说过,是在老表中新加,为了不那么麻烦,本着简单原则,想通过设定domain进行实现,但是不行,删除表重新生成肯定是可以的。现在倒是有别的方法。
1、用工具直接改数据库该新增列的属性
2、写脚本。
但是客户那边管理给你说他不会设置数据库列属性。(很无语)
写脚本本人很懒。 --------------------编程问答-------------------- 直接sql修改表结构不就可以了么,一句话的事 --------------------编程问答-------------------- 直接用SQL一般情况是首选
如果你必须用DomainClass的话尝试用
http://grails.org/doc/latest/ref/Database%20Mapping/column.html
column 的 defaultValue
补充:Java , Web 开发