blogjava's web log ...
posted on 2006-05-31 01:04 record java and net 阅读(8843) 评论(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 了 回复 更多评论
unsaved-value="" 回复 更多评论
数据库字段不够长 回复 更多评论
UUID.HEX对应的数据库字段长度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方法的问题,也就是这句调用:this.getHibernateTemplate().save(cc);你看看Spring源代码,这个save方法在Spring内部是怎么实现的。是调用Hibernate的save方法吗?如果调用的是saveOrUpdate方法,那就会出错。。他会插入相同的主键,会认为你这个新插入的对象是游离对象。 回复 更多评论