浏览 3252 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-03-11
在hbm.xml文件里面已经配置了 ...... <version column="VERSION_NUM" name="versionNum" type="integer" unsaved-value="null"> </version> xml 片段
...... 问题是这样的,, 我要update一个表, 比如是 User表, 我第一步就先去出来记录user1, 然后将user1里面的对应的值set到页面的form中, 其中也包括user1当时取出来的version number. 比如说有两个人(张三, 李四)同时修改user1这条记录, 再假设user1这个记录开始的version number是4. 张三 先取出来user1记录想要进行update操作, 这时候数据库中user1的version number是4, 并且user1取到页面form中的version number 值也是4. 然后 李四也取出来了 user1记录, 同样 user1在数据库中的version number也是4, 取到页面表单中的version 值也是4. 不过李四先过张三提交了修改. 经过李四修改后, 数据库中的version number已经变成了5. 如果现在张三提交修改,按照道理应该是不可以成功的..不过我代码如下面这样写却不行,, 我只能显式的调用 session.merge() 方法才行.. 我的code java 代码
如果向上面这样的代码,, 张三还是可以update成功,, 比较想不通, 难道hibernate不知道用我给的version number先去 check一下?? 不过我如果把上面的roleDAO.flush();改成 roleDAO.merge(userPO); 就可以用我给的version先check了.. 真是搞不通了... 不知道各位在用hibernate的时候这种情况是怎么处理的.. 给我一点建议吧.. 谢谢 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |