真是郁闷,Hibernate的Id generator不理解

阅读更多
:?

正在练习hibernate,将hibernate融入到以前的项目中。
对于中的理解,不过想使用自己定义的格式流水号。头大了啊。

看参考文档中说明有那么多的可选择,我先选择sequence吧。

呵呵,今天看论坛上的"用户自定义ID Generator的例子",有所启发,按照自己的想法实现了,只是奇怪为何这个例子只有代码没有解释说明,摸索了一会,根据JB的提示错误搞定了。

问题关键集中在其类的映射文件上.hbm.xml的元素中的声明。
         
                uid_table
                next_hi_value_column
                C
        

其中class为自定义的类,访问方式同我们访问普通的类一样,这个CustomizedIdGenerator类应当extends net.sf.hibernate.id.TableGenerator类,专门负责生成想要的ID。
而后uid_table指名使用哪个表来记录下个可用的ID值,所以还需要一个column声明next_hi_value_column,此时要记得生成这个表后,该column的值一定要给个初值,否则报错要你提供一个hi value。C顾名思义当然就是前缀了,这样定义后生成的id形式为CX,其中X为数字。

CustomizedIdGenerator类代码请自行看论坛的文章吧。虽然没有完全搞懂,但也实现了我的需要。其实很简单的,就在最后的return处加上自己需要的格式。比如我就实现了CCC00000002342格式,呵呵,还不错嘛。

此处需要注意的是,千万不可以使用Tomcat的连接池,否则自定义id功能的无法使用。最好选择使用hibernate的自带的连接池。

希望根据此方式类推,慢慢掌握generator的做法。

你可能感兴趣的:(Hibernate,Tomcat,C,C++,C#)