我要求在第一次读取时锁定实体。即我首先使用session.load()来读取实体,如果失败,那么我使用session.get()。第一次使用get()通过会话读取实体时,我会将其标记为已锁定(锁定是瞬态属性,不会保留在DB中)。我假设下次调用session.load()时,我会从缓存中获取标记为已锁定的实体,而不是再次从DB中检索它。但这不会发生。 session.load()总是失败并转到catch块以使用session.get()。不知道我的理解错在哪里。感谢任何帮助。还建议我是否有更好的方法来实现这一目标。
entity= service.load(id);
try{
entity.getBookingNo();
}catch(LazyInitializationException e){
entity= service.getById((id));
}
if(entity.getLock()){
return "Record locked by another user";
}
entity.setLock(true);