hibernate怎样改变主键值?
版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://sunny.blog.51cto.com/182601/31605 |
前些天我的同事遇到了一个问题:数据库使用的是oracle ,持久层方面使用的是hibernate3 ,数据库中的有一张表的主键使用的是前缀字符 + 序列。这个问题就复杂了,也就是说我们每个对象的主键值都不是纯数字。那么hibernate怎样将这个主键写入数据库呢。
查了一些资料,也没有找到适合的解决办法,后来请教好友苏强终于解决问题了。呵呵,我想也许很多人都遇到过类似的问题,我就把它写出来了。方便大家参考,或有不同意见的朋友们讨论一下,具体的解决办法是:
1:<id name="userid" type="java.lang.String">
<column name="USERID" length="20" /> <generator class="cn.utils.MyGenarator"> <param name="sequence">s_userid</param> </generator> </id> 首先,要改的是hbm的配置文件,在第三行的地方写一个类,这个类将来会用于处理序列的问题,包括路径一定不要配错,第四行中的参数sequence的属性的值不要配错,就是你在数据库中的序列名字。
2:上面的问题改完了,接下来我们要来写这个类了。类的名字和路径不要写错,这个类要继承SequenceGenerator 。
public class MyKeyGenarator extends SequenceGenerator {
public Serializable generate(SessionImplementor session, Object obj) throws HibernateException { Serializable result = super.generate(session,obj); return "hello" + result + "haha"; } } 程序中的result就是你返回来的序列,然后你可以对这个序列前后加任何的字符串了,随你了。呵呵呵! 本文出自 “我的博客开张了” 博客,请务必保留此出处http://sunny.blog.51cto.com/182601/31605 本文出自 51CTO.COM技术博客 |



张健的博克
博客统计信息
热门文章
最新评论
友情链接