`
icyheart
  • 浏览: 765243 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

阅读更多

       在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了。

分享到:
评论
13 楼 icyheart 2009-12-18  
http://sucre.iteye.com/admin/blogs/551040好了问题解决了
12 楼 icyheart 2009-12-18  
linliangyi2007 写道
首先Hibernate中一个主键只对应一个表,这是模型上的概念,你怎么能让一个主键在两个表中存储,然后再说人家的saveorupdate有问题,根本就是你没搞清楚hibernate对主键的约束啊

我的问题中写的很清楚,是两个表的主键名相同,并不是"一个主键在两个表中存储"
11 楼 linliangyi2007 2009-12-17  
首先Hibernate中一个主键只对应一个表,这是模型上的概念,你怎么能让一个主键在两个表中存储,然后再说人家的saveorupdate有问题,根本就是你没搞清楚hibernate对主键的约束啊
10 楼 icyheart 2009-12-17  
kjj 写道
linliangyi2007 写道
楼主对Hibernmate的ORMapping就没搞清楚啊,两张表映射一个对象啊,有问题啊

lz 好好看看这位仁兄的提醒吧
ps: 两张表对应相同主键 的情况多了,谁都像你这样!!

是,两张表对应相同主键的情况是多了,但是单独存在是没有任何问题的,你可以去试试,在我说的这种情况下,是不行的,我两张表怎么可能映射一个对象
9 楼 kjj 2009-12-17  
linliangyi2007 写道
楼主对Hibernmate的ORMapping就没搞清楚啊,两张表映射一个对象啊,有问题啊

lz 好好看看这位仁兄的提醒吧
ps: 两张表对应相同主键 的情况多了,谁都像你这样!!
8 楼 icyheart 2009-12-17  
linliangyi2007 写道
楼主对Hibernmate的ORMapping就没搞清楚啊,两张表映射一个对象啊,有问题啊

我没有两张表映射一个对象,只不过是这两张表分别映射的对象中,两个属性相同而已,就像这样:a对象中有一个masterId,b对象中也有一个masterId
7 楼 icyheart 2009-12-17  
满月无双 写道
确实是个问题????楼主好像也没说说该怎么解决!!

先去用masterid去查询数据库,确实为null时,再insert
6 楼 linliangyi2007 2009-12-17  
楼主对Hibernmate的ORMapping就没搞清楚啊,两张表映射一个对象啊,有问题啊
5 楼 满月无双 2009-12-17  
确实是个问题????楼主好像也没说说该怎么解决!!
4 楼 chenzengpeng 2009-12-17  
为啥要用这个方法呢?
完全可以自己判断到底要save还是update,再调对应的方法嘛。。。
3 楼 icyheart 2009-12-17  
当然可以啦
2 楼 zygjavae 2009-12-16  
可不可以完全不用saveOrUpdate方法啊
1 楼 dieslrae 2009-12-16  
我一般都很少用saveOrUpdate o(╯□╰)o

相关推荐

Global site tag (gtag.js) - Google Analytics