hibernate uuid.hex主鍵生成+spring帶來的困惑
表結構










2.配置文件











//uuid.hex生成方式










spring配置文件




vo














dao 代碼





















測試














怎么會這樣,第一次可以添加進數據庫,第二次再調用dao.addCloumn()就報錯?
這樣做應該是沒有問題的啊??
posted on 2006-05-31 01:04 record java and net 閱讀(8848) 評論(14) 編輯 收藏 所屬分類: java 、Spring
blogjava's web log
...
posted on 2006-05-31 01:04 record java and net 閱讀(8848) 評論(14) 編輯 收藏 所屬分類: java 、Spring
是啊。
但是uuid.hex不是由hibernate自動生成的嗎?
怎么會報重復呢?
回復 更多評論
我都用UUID,可是沒有你說的這個問題。
不會有問題的,還有就是你用Hiberate3那么就用uuid
你看源代碼就知道uuid.hex其實和uuid是一樣的了。只有在hibernate2里面才有區別。 回復 更多評論
@莫多
我單獨用hibernate測試沒有問題,加上spring 問題就來了。。
以下是hibernate測試代碼(通過)
//得到session
public Session getSession()
{
try
{
Configuration cfg = new Configuration().configure();
SessionFactory sf=cfg.buildSessionFactory();
return sf.openSession();
}
catch(Exception ee)
{
log.error("error:"+ee.getMessage());
}
return null;
}
//添加的方法
public void addCloumn()
{
Cloumn cc = new Cloumn();
cc.setU_id("297ebd930b46197a");
cc.setCname("測試添家攔目1");
cc.setCbeizhu("備注");
cc.setCsort(1);
Session ss=this.getSession();
ss.save(cc);
ss.flush();
ss.close();
}
public static void main(String[] args) {
dao test = new dao();
//添加
test.addCloumn();
再次添加
test.addCloumn();
}
這樣沒有問題。。
加了spring就有問題。
路過的高手指點。。。
回復 更多評論
我也碰到類似的問題。。。。現在解決了
1。確認id字段在數據庫是vchar(32)
2.表按id字段做索引 回復 更多評論
@路過
謝謝阿。
有空我研究1下。
最近搞.net 了 回復 更多評論
Cloumn cc = new Cloumn();
cc.setU_id("297ebd930b46197a");
cc.setCname("測試添加攔目1");
cc.setCbeizhu("備注");
cc.setCsort(1);
UUID會自動生成,不需要你設置
cc.setU_id("297ebd930b46197a");
這句不要 回復 更多評論
我感覺應該是Spring的HibernateTemplate方法的問題,也就是這句調用:
this.getHibernateTemplate().save(cc);
你看看Spring源代碼,這個save方法在Spring內部是怎么實現的。是調用Hibernate的save方法嗎?如果調用的是saveOrUpdate方法,那就會出錯。。他會插入相同的主鍵,會認為你這個新插入的對象是游離對象。 回復 更多評論
只有注冊用戶登錄后才能發表評論。 | ||
![]() |
||
網站導航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
|
||
相關文章:
|
||