精华帖 (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了。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-12-16
我一般都很少用saveOrUpdate o(╯□╰)o
|
|
返回顶楼 | |
发表时间:2009-12-16
可不可以完全不用saveOrUpdate方法啊
|
|
返回顶楼 | |
发表时间:2009-12-17
当然可以啦
|
|
返回顶楼 | |
发表时间:2009-12-17
为啥要用这个方法呢?
完全可以自己判断到底要save还是update,再调对应的方法嘛。。。 |
|
返回顶楼 | |
发表时间:2009-12-17
确实是个问题????楼主好像也没说说该怎么解决!!
|
|
返回顶楼 | |
发表时间:2009-12-17
楼主对Hibernmate的ORMapping就没搞清楚啊,两张表映射一个对象啊,有问题啊
|
|
返回顶楼 | |
发表时间:2009-12-17
满月无双 写道 确实是个问题????楼主好像也没说说该怎么解决!!
先去用masterid去查询数据库,确实为null时,再insert |
|
返回顶楼 | |
发表时间:2009-12-17
最后修改:2009-12-17
linliangyi2007 写道 楼主对Hibernmate的ORMapping就没搞清楚啊,两张表映射一个对象啊,有问题啊
我没有两张表映射一个对象,只不过是这两张表分别映射的对象中,两个属性相同而已,就像这样:a对象中有一个masterId,b对象中也有一个masterId |
|
返回顶楼 | |
发表时间:2009-12-17
linliangyi2007 写道 楼主对Hibernmate的ORMapping就没搞清楚啊,两张表映射一个对象啊,有问题啊
lz 好好看看这位仁兄的提醒吧 ps: 两张表对应相同主键 的情况多了,谁都像你这样!! |
|
返回顶楼 | |