我有java-servlet应用程序+ hibernate +流服务器
流量:
问题:
出现数据一致性问题,换句话说是递减分钟,
例如:user.setMinutes(user.getMinutes() - 2)
可能看不到新分钟响应所做的更改,而且分钟也会损坏
我认为sollution可以创建新的hibernate事务并在每次更改分钟时提交它,但这不起作用:
Transaction t = session.beginTransaction();
user.setMinutes()
session.flush();
t.commit();
问题:
如何在每次更改获取最新数据时解决此问题?
答案 0 :(得分:1)
Hibernate会话将您的实体缓存在内存中(在您的情况下是User
实体)。仅创建用于更改剩余分钟数的新事务是不够的,还必须重新加载其他任务所做的更改(附加分钟请求)。您可以致电refresh()
:
session.refresh(user);
user.setMinutes(user.getMinutes() - 2);
session.flush();