hibernate怎样改变主键值?

    前些天个人同事遇到了一个问题:数据库使用的是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就是你返回来的序列,而后你能够对这个序列先后加任何的字符串了,随你了。呵呵呵!
相关文章
相关标签/搜索