用户登录
用户注册

分享至

hibernate 保存数据失真

  • 作者: Alwayshere32782496
  • 来源: 51数据库
  • 2021-01-18
你的session是不是没有关闭过啊,我遇到过因session未关闭引起的数据不一致的情况.貌似多个session实例间的数据不是同步或共享的.比如,你创建了session1,session2.在request1中使用session1添加了数据user1,在request1结束后的另一个请求中使用了session2查询user1,可能就会查询不到你上个请求中所保存的数据(数据已存在数据库中).
还有其他很多数据不一致的情况.比如明明已经更新数据了(数据库中的数据是正确的,但就是查询出的数据是更新前的),数据删除了还能查询到(数据库中已没有数据了)等等.

我当时是没有关闭ThreadLocal中的session,也不知道是不是我有什么地方设置错了还是其他的问题...后来就在request结束时把session关闭掉就好了.



  其实也可能是你的hibernate配置关系的时候 没有级联操作或者其他的。这些都会导致以上你所发生的。这个跟你的事务是没有关系的。



  有没有主键?有没有唯一标识?有没有用到持久化?有的话,id相同时只会更新不会保存,没有用到的话会,唯一标识主键会报错



  可以查看一下web.xml里面加一个

OpenSessionInViewFilter
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter



OpenSessionInViewFilter
*.action




  session没关掉

session.close()



  那么久,还没碰到,看你咋写法的了
软件
前端设计
程序设计
Java相关