У меня есть таблица результатов. Я извлекаю строку результата, используя result_id, а затем использую сведения о результате.
Я обновляю некоторые значения таблицы результатов:
try {
Result instance = (Result) getTransactionSession().get("com.xxx.Result", id); //$NON-NLS-1$
commit();
if (instance == null) {
ResultHome.log.debug("get successful, no instance found"); //$NON-NLS-1$
} else {
updateResultStepsSequence(id, instance);
ResultHome.log.debug("get successful, instance found"); //$NON-NLS-1$
}
return instance;
} catch (RuntimeException re) {
ResultHome.log.error("get failed", re); //$NON-NLS-1$
rollback();
throw re;
}
А
private void updateResultStepsSequence(long resultId, Result resultInstance) {
if (resultInstance.getStepCount() > 0) {
List<ResultStep> resultSteps = resultInstance.getResultSteps();
if (resultSteps != null && !resultSteps.isEmpty() && (resultSteps.get(0).getDurationSum() == 0)) {
try {
Session session = SessionFactoryProvider.getSessionFactory().getCurrentSession();
Query query = session.getNamedQuery("updateResultStepSequence").setLong("result_id", //$NON-NLS-1$ //$NON-NLS-2$
resultId);
query.executeUpdate();
commit();
} catch (RuntimeException re) {
ResultHome.log.error("Query execution failed", re); //$NON-NLS-1$
rollback();
throw re;
}
}
}
}
После выполнения метода updateResultStepsSequence () я вижу, что таблица обновляется, но объект экземпляра все еще содержит старые значения до обновления БД.
Как я могу получить обновленные значения из таблицы?
Я попытался создать новый сеанс, обновить таблицу и закрыть вновь созданный сеанс.
При таком подходе я могу получить последние обновленные значения из таблицы.
Есть ли лучший способ сделать это?