论坛首页 入门技术论坛

Hibernate中saveOrUpdate()使用时要注意的问题

浏览 5191 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (7)
作者 正文
   发表时间:2009-12-16  

       在Hibernate中saveOrUpdate()方法在执行的时候,先会去session中去找存不存在指定的字段,如果存在直接update,否则save,这个时候问题就发生了。

      有两张表,表A和表B,这两张表的主键都是一样的,例如都是MASTER_ID,同时对应的BO里面属性都是masterID,现在要执行的操作是,以MASTER_ID为条件将表A中的数据查询出来,然后将部分值插入到表B中,然后再更新表B,在查询表A后,session中已经存在masterID了,这个时候再去对表B进行savaOrUpdate的时候,Hibernate会发现session中已经存在masterID了,所以执行的就是update,但是实际上表B中根本不存在masterID这个值,当你执行完查询数据库的时候会发现没有插入数据,像这种情况,就得先用masterID对表B进行查询,当返回的BO为NULL时,new一个新BO然后再进行插入,这个时候用到的就是createbo了。

   发表时间:2009-12-16  
我一般都很少用saveOrUpdate o(╯□╰)o
0 请登录后投票
   发表时间:2009-12-16  
可不可以完全不用saveOrUpdate方法啊
0 请登录后投票
   发表时间:2009-12-17  
当然可以啦
0 请登录后投票
   发表时间:2009-12-17  
为啥要用这个方法呢?
完全可以自己判断到底要save还是update,再调对应的方法嘛。。。
0 请登录后投票
   发表时间:2009-12-17  
确实是个问题????楼主好像也没说说该怎么解决!!
0 请登录后投票
   发表时间:2009-12-17  
楼主对Hibernmate的ORMapping就没搞清楚啊,两张表映射一个对象啊,有问题啊
0 请登录后投票
   发表时间:2009-12-17  
满月无双 写道
确实是个问题????楼主好像也没说说该怎么解决!!

先去用masterid去查询数据库,确实为null时,再insert
0 请登录后投票
   发表时间:2009-12-17   最后修改:2009-12-17
linliangyi2007 写道
楼主对Hibernmate的ORMapping就没搞清楚啊,两张表映射一个对象啊,有问题啊

我没有两张表映射一个对象,只不过是这两张表分别映射的对象中,两个属性相同而已,就像这样:a对象中有一个masterId,b对象中也有一个masterId
0 请登录后投票
   发表时间:2009-12-17  
linliangyi2007 写道
楼主对Hibernmate的ORMapping就没搞清楚啊,两张表映射一个对象啊,有问题啊

lz 好好看看这位仁兄的提醒吧
ps: 两张表对应相同主键 的情况多了,谁都像你这样!!
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics