java - 数据的 session.update() 或 session.save() 没有反射(reflect)在数据库中?

标签 java spring hibernate spring-mvc

我正在使用 spring mvc 3.2 和 hibernate 3.6.3 构建 Web 应用程序 我正在我的 DAO 类中扩展 HibernateDaoSupport 类。现在我想使用 session.update() 更新一个实体,其中我从 hibernateDaoSupport 方法 getSession() 获取 session 。我也在这方面使用事务。 但提交事务后,更新并未反射(reflect)在数据库中。但是如果我在提交之前使用 session.flush() ,那么它就会得到反射(reflect)。据我所知, transaction.commit 在提交之前调用刷新,那么为什么它不更新记录。我没有在我的应用程序上下文中使用任何事务管理器,那么事务是如何由 hibernateaosupport 管理的。当我的应用程序中打开一个新 session 时,因为 getSession 方法检查当前事务中的 session ,如果发现,则返回其他新 session 。这意味着是否会在每个 http 请求中打开一个新的 hibernate session ?

我的 Dao 代码是 -

public Map<String, Object> addImmunizationCard(Box box,
            Map<String, Object> dataMap) {
        Session session = (Session) getSession();
        Map<String, Object> map = new HashMap<String, Object>();
        Transaction tx = null;
try {
            tx = session.beginTransaction();

MasBed bed = (MasBed)session.get(MasBed.class, new Integer(1101));

            System.out.println(bed.getBedNo());
            bed.setBedNo("Amit Das");
            session.update(bed);
            tx.commit();

        } catch (Exception e) {
            e.printStackTrace();
            tx.rollback();
        }
        return map;
}

最佳答案

默认的刷新模式是AUTO,这意味着它有时会在查询执行之前刷新。当刷新模式设置为 COMMIT 时,刷新会在事务提交之前完成。

请参阅https://docs.jboss.org/hibernate/orm/3.5/javadocs/org/hibernate/FlushMode.html

关于java - 数据的 session.update() 或 session.save() 没有反射(reflect)在数据库中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43535878/

相关文章:

java - 数组包含该值多少次?

java - 软代码 Java 类名

java - ArrayList .get 比 HashMap .get 快吗?

spring - Apache HttpClient 向 Spring @Controller 类进行多部分 POST

java - 在 OneTOMany 映射中,外键在 Hibernate-MySQL 中插入为 null

java - 帮助重写 HQL 查询(Hibernate 查询语言)

java - 屏幕上有图像 "wrap around"。 JavaFX

java - 使用 SpringFramework EntityManager 始终为 NULL

Eclipse 没有在多模块 Maven 项目中加载依赖模块

hibernate - 无法执行 DELETE 时返回的正确 http 状态代码是什么?