我有一种情况,多于一个线程可以修改同一个对象(它们修改不同的字段,所以这不是问题)。我发现以下方法可能存在问题:
Contact contact = someService.getMeAContactSomeHow(..);
try {
//force hibernate to initialize contact's collections
Hibernate.initialize(contact);
} catch (StaleObjectStateException e) {
session.evict(contact);
//reload the contact object with up to date version property
contact = contactDao.get(contact.getId());
}
//continue working with contact as nothing has happened.
但如果我无法访问hibernate会话,我就无法使用此方法。例如,我正在使用控制器助手类中的联系对象(基本上不能访问休眠会话)。
如何复制相同的行为但无法访问Hibernate会话?