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就是你返回來的序列,而後你能夠對這個序列先後加任何的字符串了,隨你了。呵呵呵!
相關文章
相關標籤/搜索