hibernate有时可以保存数据有时不能保存数据,包括它的查询有时候查询的也是错误的数据
答案:6 悬赏:0 手机版
解决时间 2021-02-23 23:47
- 提问者网友:浩歌待明月
- 2021-02-23 11:12
同一个功能,每次提交数据完全相同,为什么有时可以保存有时失败,包括查询利用HQL查询也会查询出很奇怪的数据,比如某时应该是空数据,结果居然查询出来了其他数据!!跟踪分析了好久用jconsole,JMAP,MAT监控内存没有任何变化一切正常,难道是session的问题吗?项目使用struts2+spring3.0.5+hibernate3.5,spring事务使用的是AOP声明事务,事务这一块是正确的,我目前觉得是session出的问题,但是不知道因为什么,或者是别的原因,唉
最佳答案
- 五星知识达人网友:迷人又混蛋
- 2021-02-23 11:56
你的session是不是没有关闭过啊,我遇到过因session未关闭引起的数据不一致的情况.貌似多个session实例间的数据不是同步或共享的.比如,你创建了session1,session2.在request1中使用session1添加了数据user1,在request1结束后的另一个请求中使用了session2查询user1,可能就会查询不到你上个请求中所保存的数据(数据已存在数据库中).
还有其他很多数据不一致的情况.比如明明已经更新数据了(数据库中的数据是正确的,但就是查询出的数据是更新前的),数据删除了还能查询到(数据库中已没有数据了)等等.
我当时是没有关闭ThreadLocal中的session,也不知道是不是我有什么地方设置错了还是其他的问题...后来就在request结束时把session关闭掉就好了.
还有其他很多数据不一致的情况.比如明明已经更新数据了(数据库中的数据是正确的,但就是查询出的数据是更新前的),数据删除了还能查询到(数据库中已没有数据了)等等.
我当时是没有关闭ThreadLocal中的session,也不知道是不是我有什么地方设置错了还是其他的问题...后来就在request结束时把session关闭掉就好了.
全部回答
- 1楼网友:不想翻身的咸鱼
- 2021-02-23 16:52
那么久,还没碰到,看你咋写法的了
- 2楼网友:痴妹与他
- 2021-02-23 15:54
session没关掉
session.close()
- 3楼网友:妄饮晩冬酒
- 2021-02-23 14:17
可以查看一下web.xml里面加一个
OpenSessionInViewFilter
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
OpenSessionInViewFilter
*.action
- 4楼网友:西岸风
- 2021-02-23 12:52
有没有主键?有没有唯一标识?有没有用到持久化?有的话,id相同时只会更新不会保存,没有用到的话会,唯一标识主键会报错
- 5楼网友:走死在岁月里
- 2021-02-23 12:26
其实也可能是你的hibernate配置关系的时候 没有级联操作或者其他的。这些都会导致以上你所发生的。这个跟你的事务是没有关系的。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯