java - spring-hibernate transaction-变化没有反射(reflect)?

标签 java spring hibernate

我正在使用 Spring 和 Hibernate。我有一个用 @Transactional 注释的方法。该方法有两个数据库调用。一个调用将更新表中的数据,另一个调用将根据第一个调用的更新数据从同一个表中检索一些数据。 问题是第一次调用的数据库更改没有立即反射(reflect)。更改在流程从使用 @Transactional 注释的方法出来后反射(reflect)出来。我仍然尝试调用 session.flush() 但没有用。请推荐我。

@Transactional
public void method1(){
dao.updateM1();
dao.getData();
}

最佳答案

您能详细说明一下您的场景吗?例如:您为 updateM1getData 方法声明了什么传播级别?

如果您没有描述 updateM1getData 方法的事务,问题是这两种方法都在同一个事务中。因此,在事务提交之前,Hibernate 不会更新数据。要解决这个问题,您只需将 updateM1 的事务描述如下:

@Transactional (propagation = Propagation.REQUIRE_NEW)
public E updateM1() {}

这样,每次调用 updateM1 时都会创建一个新事务。当 updateM1 完成时,新事务将被提交,所有更改将保留在数据库中。

关于 session.flush 不起作用,这里有一个明确的答案:Question about Hibernate session.flush()

关于java - spring-hibernate transaction-变化没有反射(reflect)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16462976/

相关文章:

java - Apache Camel Spring-WS 路由未初始化

java - 条件插入 Mongodb

在 Intellij 中构建 jar 文件后出现 java.lang.NoClassDefFoundError

java - 如何在java中检查两个csv/xml文件是否相同

java - 从不同对象的列表中连接 3 个流时获取 List<String>

java - 在 JPA 中链接不同实体类型的最佳方法

java - Android Realm 存储 int[] 和 String[]

java - Java 中 spring-security 的替代方案(spring)

java - hibernate,无法保存多对一关系

java - 未使用 Hibernate 和 Spring MVC 定义 Spring Security 名为 'myUserDetailsService' 的 bean