论坛首页 入门技术论坛

如何写一个hibernate生成以年月日(0001递增)主键

浏览 3145 次
该帖已经被评为新手帖
作者 正文
   发表时间:2007-10-13  
要用hibernate主键生成器,符合以下规则:
U200710130001
U为表的第一个字线,如user表为U
2007表示2007年
10表示10月份
13表示13号
0001表示以00001为这天第一个用户的ID,
但是到了明天再注册的第一个ID号应该为:U200710140001
请问这个生成器如何写,我苦苦思索,还是写不出来.,麻烦有代码的贴代码.有思路的给个思路.
小弟在此谢过! 
   发表时间:2007-10-13  
不要用业务主键

其次可以另外写一个生成器(和Hibernate生成器无关,类似工具类)。
建立一个表记录每日的生成数。
记得带同步锁否则多线程可能会生成相同编号。
0 请登录后投票
   发表时间:2007-10-16  
呵呵.关键是这个日期改变之后0001-000X如何归零
0 请登录后投票
   发表时间:2007-10-16  
1.用单实例模式
2.得到键的方法要加锁
3.有一个属性用来保存上回得到的键值
4.初始化时遍历所有的表得到最大的键值,当作属性的初始值。
0 请登录后投票
   发表时间:2007-10-16  
不是一定要用Java来写,也可以考虑在存储过程中生成你需要的键值,Java程序调用该存储过程取得结果即可
就是把楼上提到的4件事情移到数据库中处理,那种办法更适合得自己权衡了
0 请登录后投票
   发表时间:2007-10-30  
更倾向于java写,呵呵。写一个hibernate的key生成器会简单点。
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics