Java开发网 Java开发网
注册 | 登录 | 帮助 | 搜索 | 排行榜 | 发帖统计  

您没有登录

» Java开发网 » Java EE 综合讨论区 » Hibernate  

按打印兼容模式打印这个话题 打印话题    把这个话题寄给朋友 寄给朋友    该主题的所有更新都将Email到你的邮箱 订阅主题
flat modethreaded modego to previous topicgo to next topicgo to back
作者 hibernate saveOrUpdate奇异问题
wrjfthh





发贴: 3
积分: 0
于 2007-10-25 17:14 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
小弟在使用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);



作者 Re:hibernate saveOrUpdate奇异问题 [Re:wrjfthh]
wrjfthh





发贴: 3
积分: 0
于 2007-10-25 17:17 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
补充注明 数据库中两条记录除主键外一样,包括Createtime 这个在java中是new的一个 Date()



flat modethreaded modego to previous topicgo to next topicgo to back
  已读帖子
  新的帖子
  被删除的帖子
Jump to the top of page

   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923