CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  框架、开源

请问Hibernate中用到的 saveOrUpdate() 使用方法

楼主x97(鲨鱼刺)2004-12-01 11:43:57 在 Java / 框架、开源 提问

怎么设置才能让它根据ID在数据库中搜索一下,看ID如果存在就update,如果不存在就save.  
  unsaved-value="null"   肯定是不行的,因为我在执行方法前会给ID设一个值.  
  那应该设成什么呢?  
  水平比较低,望能说详细点儿,多谢:)  
   
  现在java版太乱啦,也不知道该在哪里发,版主手下留情 问题点数:40、回复次数:7Top

1 楼yxhzj(余华[学习J2EE中])回复于 2004-12-01 11:46:12 得分 0

看看Hibernate中文网吧,上面好象有资料  
  Top

2 楼x97(鲨鱼刺)回复于 2004-12-01 13:32:10 得分 0

我有参考手册,看不明白Top

3 楼totodo(土豆仙)回复于 2004-12-02 09:17:48 得分 0

load出来,   在save那自然是update  
  new   一个自然是save....  
   
  这个跟unsaved-value="null"   没有任何关系.  
   
  unsaved-value   只是在父子关系中才会用到.   顾名思意,   如果父中查出来的子值,与null比较,如果为避null   那么new   ,如果不为null那么updateTop

4 楼cm4ever(小P[Fly Away])回复于 2004-12-02 09:28:46 得分 0

Object   po   =   session.get(poClass,   id);  
   
  if   (   po   ==   null   )  
  {  
          po   =   poClass.newInstance();  
          //   set   properties...  
          session.insert(po);  
  }  
  else  
  {  
          //   set   properties  
          session.update(po);  
  }Top

5 楼Henu(守护进程)回复于 2004-12-07 11:46:25 得分 0

Cat   po   =   (Cat)session.load(Cat.class,   id)  
  if(po.getId   ==   null)   {  
      ...  
  }Top

6 楼asp4567(无悔浪子)回复于 2005-01-22 10:16:43 得分 40

正好研究这个问题好几天了,  
  我来说说吧。  
  如果id是assigned那么,你的unsaved-value,设任何值都没有效果,结果就是要么总是发送save,要么总是发送update.如果id是采用其它的生成方式,unsaved-value一般可以设为null  
   
  那么怎么样才能在id是assigned的情况下。使用saveorupdate呢?  
  有两种解决办法。这里只说其中一种,被我证明是可行的。(另外的方法没试过)  
  就是给数据库增加一个version的字段。然后在映射文件中制订   version的属性。并设定其unsaved-value=null  
  看下面的:  
  <version   name="logVersion"  
                                    column="LOG_VERSION"  
                                    type="java.lang.Integer"  
                                    unsaved-value="null"/>  
   
  如果还有要深究的,msn:asp4567@hotmail.com   说的不对,大家多指教。  
   
  Top

7 楼raymanyoung()回复于 2005-01-28 20:12:30 得分 0

我不太明白为什么   id   is   assigned.  
  一般情况创建新数据不需要assign   ID   吧。如果要改的话也不能改Id   啊。Top

相关问题

  • 请问,Hibernate+Informix 9.x中为什么不能使用Query对象的setMaxResults方法?
  • escape使用方法
  • keil使用方法
  • MSFlexGrid的使用方法
  • SetTimer的使用方法
  • DEBUG的使用方法二
  • 求ClientSocket的使用方法
  • byte() 方法如何使用?
  • QQ的使用方法
  • <<与>>的使用方法?

关键词

  • null
  • unsaved
  • po
  • 方法
  • assign
  • cat
  • save
  • update
  • session

得分解答快速导航

  • 帖主:x97
  • asp4567

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo