hibernate saveOrUpdate奇异问题

小弟在使用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); 


补充注明 数据库中两条记录除主键外一样,包括Createtime 这个在java中是new的一个 Date() 

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值