wrjfthh
发贴: 3
积分: 0
|
于 2007-10-25 17:14
小弟在使用hibernate saveOrUpdate出现问题。 数据库数据为2条相同记录(主键自动生成),由于再现情况不多,也没有找出具体原因,估计分析有两点,请大家帮忙找找。 1,同时插入两条记录 这种情况只用重复提交时出现,但我在插入之前做了查询数据库的操作,数据已经存在(Itemcode和Employid均重复)就不用插入数据库了,理应不会插入了。 2,先插入一条,再更新的时候不是更新而是插入一条 这种情况可能是因为saveOrUpdate时,本想更新而没有加入主键,当时程序中在执行方法之前已经查询过数据库了 ,如果有数据则取出主键付给新的vo了,照理来说也不会出现重复数据。
由于测试时没有再现,也不知道数据库重复数据的来源(有一点可以肯定数据不是手动添加的)希望大家帮帮忙。谢谢 代码如下
先建立vo employitem = new TEmployitem(); employitem.setIsflag(info.getIsFlag()); employitem.setEmployid(new Long(info.getEmployid())); employitem.setResult(info.getResult()); employitem.setItemcode(info.getItemcode()); employitem.setItemtime(new Date());
employitem.setUpdatetime(new Date()); employitem.setUpdateuser(info.getUsername());
查询数据库 如果存在则返回TEmployitem新对象 em 并把付给employitem employitem.setItemid(em.getItemid()); employitem.setCreatetime(em.getCreatetime()); employitem.setCreateuser(em.getCreateuser()); 如果不存在直接
employitem.setCreatetime(new Date()); employitem.setCreateuser(info.getUsername()); 最后 employItemDao.addOrUpdate(employitem);
|