在grails的开发中,Domain类的创建是很关键的。我在开发过程中,遇到了一些问题,写出来,供大家参考。 基础的用法,请参考grails官方文档,这里,我不再说。只说要注意的问题。 1、关于主键ID。grails会默认创建主键,名称:ID。类型:整型。生成策略:简单的自增,从1开始增加。 举个例子: class SysUser{ String username; String password; } 上边的Domain类中没有ID字段,但你看数据库表,会发现有ID列。是整型的。在程序中,你可以通过sysUserInstance.id获取到这个值。 如果你想改变ID的数据类型,比如改为字符串。那就显示的定义ID。这样: class SysUser{ String id; String username; String password; } 想改变生成策略,这样: class SysUser{ String id; String username; String password; static mapping={ } 其余的生成策略都有对应的写法,这里用的是hilo(用的比较多,可以用在数据库集群中)。这里我再写一种主键自动义时的写法: id generator:'assigned' 。一般有这两中就能应付大部分情况了,剩下的只能你自己查了。 2、一般情况下,grails工程的开发都是写好Domain类,自动生成数据库表。如果遇到数据库表先有了,要以他们为基础进行开发,那么Domain类就要去适应数据库表。举个我项目中的例子说明: 这是我项目中的一张数据库表: 主键:iditemgroup 外键:iditemgroupstate、jobid 对应的Domain类如下: 在Domain类中,各字段的名称我原样采用了数据库中的列名。主键和外键的设置,都在mapping中。 如果你觉得字段的名称采用数据列名与你的代码规范冲突,那么你完全可以按规范自定义,然后再mapping中将字段名与列名进行映射即可。这样:字段名 column:‘列名’。和外键的处理一样。 还有,将static mapping中的version置为false。 3、所有列默认都是不能为空的。如果有的列可能为空,记得在constraints中加约束。 |
|
来自: jasonbetter > 《待分类》