java - 如何在同一 hibernate session 中从数据库表获取更新的值

标签 java hibernate

我有一个结果表。我使用 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() 方法后,我可以看到表正在更新,但实例对象仍然保留数据库更新之前的旧值。

如何从表中获取更新后的值? 我尝试创建一个新 session ,更新表并关闭新创建的 session 。

通过这种方法,我可以从表中获取最新更新的值。

有更好的方法吗?

最佳答案

Session.refresh()方法可用于从数据库获取最新状态:

session.refresh(instance)

关于java - 如何在同一 hibernate session 中从数据库表获取更新的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50251053/

相关文章:

java - Hibernate 将两个表映射到一个类

java - 你知道哪些java报表框架?

java - 如何判断一条SQL语句是查询还是更新?

java - Hibernate 给我无效的更新 sql 查询

java - 在 Hibernate 中实现基于条件的搜索页面的优雅方式

java - 使用 Grails 在 HQL 中按 ID 的子字符串作为整数排序

java - 如何使用while循环,for循环来代替这个do-while循环。

java - 通过 ACTION_DRAG_LOCATION 滚动 GridView 并在 ACTION_DROP 上交换 Gridview 的 ArrayAdapter 中的项目

java - 实现基于配置将数据存储在不同数据库中的单一功能的最佳方法是什么?

java - Hibernate 复合键映射