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里面才有區(qū)別。 回復 更多評論
@莫多 我單獨用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就有問題。 路過的高手指點。。。 回復 更多評論
煩死了 我也一樣的有這個問題 回復 更多評論
你問題解決了嗎? 回復 更多評論
我也碰到類似的問題。。。。現(xiàn)在解決了 1。確認id字段在數(shù)據(jù)庫是vchar(32) 2.表按id字段做索引 回復 更多評論
@路過 謝謝阿。 有空我研究1下。 最近搞.net 了 回復 更多評論
unsaved-value="" 回復 更多評論
數(shù)據(jù)庫字段不夠長 回復 更多評論
UUID.HEX對應的數(shù)據(jù)庫字段長度32 回復 更多評論
Cloumn cc = new Cloumn(); cc.setU_id("297ebd930b46197a"); cc.setCname("測試添加攔目1"); cc.setCbeizhu("備注"); cc.setCsort(1); UUID會自動生成,不需要你設置 cc.setU_id("297ebd930b46197a"); 這句不要 回復 更多評論
@Andy Wu 看錯了 回復 更多評論
我感覺應該是Spring的HibernateTemplate方法的問題,也就是這句調(diào)用:this.getHibernateTemplate().save(cc);你看看Spring源代碼,這個save方法在Spring內(nèi)部是怎么實現(xiàn)的。是調(diào)用Hibernate的save方法嗎?如果調(diào)用的是saveOrUpdate方法,那就會出錯。。他會插入相同的主鍵,會認為你這個新插入的對象是游離對象。 回復 更多評論