我对休眠比较陌生,所以请温柔一点。我在长时间运行的方法(约 2 分钟长)和更改存储在数据库中的对象上的状态字段的值时遇到问题。下面的伪代码应该有助于解释我的问题。
public foo(thing) {
if (thing.getStatus() == "ready") {
thing.setStatus("finished");
doSomethingAndTakeALongTime();
} else {
// Thing already has a status of finished. Send the user back a message.
}
}
伪代码不需要太多解释。我希望 doSomethingAndTakeALongTime() 运行,但前提是它的状态为“就绪”。每当 doSomethingAndTakeALongTime() 需要 2 分钟才能完成并且对事物状态字段的更改在离开 foo() 之前不会持久保存到数据库时,就会出现我的问题。因此,另一个用户可以在这 2 分钟内提出请求,并且 if 语句将评估为 true。
我已经尝试过手动更新字段并刷新会话,但它似乎不起作用。我不知道从这里做什么,并希望得到任何帮助。
PS:我的休眠会话由 spring 管理。