[Grails] 自定义业务主键的生成方式

commanderhyk 2012-04-21
数据库表的主键需要使用自定义主键的生成方式:
根据系统登录的用户对象的行政区划代码+日期8位+3位序列,每天序列要清零
如:北京东城区的用户20120101日登陆系统,保存某个业务表的时候,系统生成的主键应该是
'110101-20120101-003'
请教一下,这个需求的代码应该如何写?谢谢
rivenhong 2012-04-21
1 你可以定义主键为String 类型的。
2 你将主键的生成规则设为assigned,然后在保存对象前,自己按设定规则set主键。
例如:
在你的domain类中,主键名为myId。

String myId
static mapping = {
  id generator: 'assigned', name: "myId", column: "MY_ID"
}


commanderhyk 2012-04-22
谢谢你的指点,我不知道能否做到这样:使用后台自动生成主键,并且仍然可以使用scaffolding
kidli 2012-04-27
2楼 + 注册一个HibernateEventListener,监控pre-insert,给自动id字段赋值
Global site tag (gtag.js) - Google Analytics