如何写一个hibernate生成以年月日(0001递增)主键
要用hibernate主键生成器,符合以下规则:
U200710130001
U为表的第一个字线,如user表为U
2007表示2007年
10表示10月份
13表示13号
0001表示以00001为这天第一个用户的ID,
但是到了明天再注册的第一个ID号应该为:U200710140001
请问这个生成器如何写,我苦苦思索,还是写不出来.,麻烦有代码的贴代码.有思路的给个思路.
小弟在此谢过!? 1 楼 tiyi 2007-10-13 不要用业务主键
其次可以另外写一个生成器(和Hibernate生成器无关,类似工具类)。
建立一个表记录每日的生成数。
记得带同步锁否则多线程可能会生成相同编号。 2 楼 guojiafuzhuxi 2007-10-16 呵呵.关键是这个日期改变之后0001-000X如何归零 3 楼 抛出异常的爱 2007-10-16 1.用单实例模式
2.得到键的方法要加锁
3.有一个属性用来保存上回得到的键值
4.初始化时遍历所有的表得到最大的键值,当作属性的初始值。 4 楼 movingboy 2007-10-16 不是一定要用Java来写,也可以考虑在存储过程中生成你需要的键值,Java程序调用该存储过程取得结果即可
就是把楼上提到的4件事情移到数据库中处理,那种办法更适合得自己权衡了 5 楼 spiritfrog 2007-10-30 更倾向于java写,呵呵。写一个hibernate的key生成器会简单点。