首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Hibernate JPA和Spring javax.persistence.TransactionRequiredException:没有事务正在进行中

您好!您提到的问题是关于 Hibernate JPA 和 Spring 中的事务处理问题。在这里,我将为您提供一个详细的答案,以帮助您解决这个问题。

首先,我们需要了解 Hibernate JPA 和 Spring 中的事务处理。事务是一组操作的集合,这些操作必须作为一个整体执行,要么全部成功,要么全部失败。在 Hibernate JPA 和 Spring 中,事务处理通常由 Spring 的事务管理器来管理。

在 Hibernate JPA 中,事务处理通常通过以下几个步骤进行:

  1. 获取 EntityManager 实例。
  2. 开始事务。
  3. 执行 CRUD 操作。
  4. 提交事务。
  5. 关闭 EntityManager。

在 Spring 中,事务处理通常通过以下几个步骤进行:

  1. 在 Spring 配置文件中配置事务管理器。
  2. 在 Spring 配置文件中配置事务模板。
  3. 在业务逻辑层中使用 @Transactional 注解来声明事务。
  4. 在业务逻辑层中执行 CRUD 操作。

当您遇到 "javax.persistence.TransactionRequiredException: 没有事务正在进行中" 这个错误时,这通常意味着您没有正确地启动事务。为了解决这个问题,您需要检查以下几点:

  1. 确保您已经配置了 Spring 的事务管理器和事务模板。
  2. 确保您已经在业务逻辑层中使用了 @Transactional 注解来声明事务。
  3. 确保您在执行 CRUD 操作之前已经开始了事务。
  4. 确保您在执行 CRUD 操作之后已经提交了事务。

如果您仍然遇到问题,请提供更多的代码和配置信息,以便我们能够更好地帮助您解决问题。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Spring JPA 自定义删改

Spring JPA 更新创建 ​ 之前介绍的方法,基本都是只读方法,查询创建没有对数据库中存储的实体进行任何修改,但是对于更新和删除来说,如果继续保持只读属性,那么改删功能是难以完成的。...,比如,我们删除了一个实体,但是在还没有执行flush操作时,这个实体还存在于实体管理器EntityManager中,但这个实体已经过期没有任何用处,直到flush操作时才会被删除掉。...1",nativeQuery = true) void deleteUserById(Long id); 派生删除 Spring Data JPA还支持派生的delete查询,使您不必显式声明JPQL查询...如果你需要修改repository 接口中的某些方法的事务属性,可以在该方法上重新加上@Transactional注解,并设置需要的属性。...[2] https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpa.modifying-queries

1.3K20

JPA操作遇到的问题(仅供自我学习)Spring boot使用Jpa的@Modifying的clearAutomatically = true的作用

transaction available for current thread - cannot reliably process 'remove' call; nested exception is javax.persistence.TransactionRequiredException...‘remove’ call 原因是使用Update、Delete等修改数据库方法没有加上事务注解,加上@Transactional即可 @Override @Transactional public...Spring boot使用Jpa的@Modifying的clearAutomatically = true的作用 @Modifying,进入这个注解,能看到,它是指可以清除底层持久化上下文,即entityManager...这个类;Jpa底层实现会有一级缓存,也就是在更新完数据库后,如果后面去用这个对象,你再去查这个对象,这个对象是在一级缓存,但是并没有跟数据库同步,此时使用clearAutomatically=true,...就会刷新Hibernate的一级缓存, 否则在同一接口中,更新一个对象,接着查询这个对象,那么查出来的这个对象还是之前的没有更新前的状态。

1K21

SpringBoot系列教程JPA之update使用姿势

spring.datasource.username=root spring.datasource.password= ## jpa相关配置 spring.jpa.database=MYSQL spring.jpa.hibernate.ddl-auto...=none spring.jpa.show-sql=true spring.jackson.serialization.indent_output=true spring.jpa.hibernate.naming.physical-strategy...查询更新 根据某个条件来更新对应的数据,这个就比较常见了,在jpa中,没有找到根据方法名来支撑这种场景的方式,但是发现了另外一个有意思的东西--jql 直接在方法方面,添加注解,注解内部写sql /**...下面推荐几篇博文 mysql之锁与事务详解 Spring学习之事务的使用姿势 Spring学习之事务管理与传播属性 关于jpa中更多事务相关的,后面再引入,我们先回到本文主题,如何解决问题: 在调用上面的方法上面添加事务注解即可.../blob/master/spring-boot/102-jpa 相关博文 mysql之锁与事务详解 Spring学习之事务的使用姿势 Spring学习之事务管理与传播属性 190612-SpringBoot

2.1K10

spring data jpa @Query注解中delete语句报错 : @Modifying注解的使用spring data jpa @Query注解中delete语句报错

spring data jpa @Query注解中delete语句报错 项目中需要删除掉表中的一些数据 @Query("delete from EngineerServices es where es.engineerId...1") int deleteByEgId(String engineerId); 但是提示了错误 org.hibernate.hql.QueryExecutionRequestException:...Not supported for DML operations 通过查阅相关的资料发现,对于执行updatedelete语句需要添加@Modifying注解 @Modifying @Query(...1") int deleteByEgId(String engineerId); 不过,添加之后运行又出现了另一个错误 nested exception is javax.persistence.TransactionRequiredException...@Query注解里面的valuenativeQuery=true,意思是使用原生的sql查询语句. sql模糊查询like语法,我们在写sql的时候是这样写的 like '%?

1.9K10

【SpringBoot】微服务数据持久化方案(SpringBootJPA+Hiberate)

看一下现在的 Java 的应用程序,JPA+Hibernate 已经成为关系数据库事实上的选择。 Spring 的出现带来了更多的实用性,让开发人员的生活变得更加轻松。...这篇文章不是 HibernateJPA 教程,而是一个简单的 Spring 教程,介绍如何使用 SpringJPA Hibernate 的支持。...Spring data jpa 提供如下能力: 用于自动生成大多数样板查询模式的 Repository 接口。 支持标注驱动的事务机制。 轻松审计实体。 支持分页、筛选器等。...我没有使用任何事务,因为 JpaRepository 本身在事务中工作。同样在这个简单示例中,我没有从实体中延迟加载任何属性,因此可以省略事务。...三、日志 我们可能想插卡Hibernate SQL生成的内容,我们可以使用以下属性: spring: jpa: show-sql: true properties: hibernate

12110

Spring事务管理涉及的接口的联系方式

事务管理器   Spring并不直接管理事务,而是提供了多种事务管理器,他们将事务管理的职责委托给Hibernate或者JTA等持久化机制所提供的相关平台框架的事务来实现。...Spring事务管理器的接口是org.springframework.transaction.PlatformTransactionManager,通过这个接口,Spring为各个平台如JDBC、Hibernate...Spring来说是透明的,它并不关心那些,那些是对应各个平台需要关心的,所以Spring事务管理的一个优点就是为不同的事务API提供一致的编程模型,如JTA、JDBC、HibernateJPA。...如果你计划使用JPA的话,那你需要使用Spring的JpaTransactionManager来处理事务。...Java原生API事务   如果你没有使用以上所述的事务管理,或者是跨越了多个事务管理源(比如两个或者是多个不同的数据源),你就需要使用JtaTransactionManager: <bean

39500

干货|一文读懂 Spring Data Jpa

其实这个话题松哥以前零零散散的介绍过,在我的书里也有介绍过,但是在公众号中还没大伙聊过,因此本文就和大家来仔细聊聊 Spring Data Jpa! 故事的主角 Jpa 1....JPAHibernate的关系 JPAHibernate 的一个抽象(就像JDBCJDBC驱动的关系); JPA 是规范:JPA 本质上就是一种 ORM 规范,不是ORM 框架,这是因为 JPA...环境下,Spring Data Jpa要怎么配置,配置完成后,用法 Spring Boot 中的用法是一致的。...注意: JPQL 不支持使用 INSERT 方法的返回值应该是 int,表示更新语句所影响的行数 在调用的地方必须加事务没有事务不能正常执行 默认情况下, Spring Data 的每个方法上有事务,...他们不能完成修改操作 说到这里,再来顺便说说Spring Data 中的事务问题: Spring Data 提供了默认的事务处理方式,即所有的查询均声明为只读事务

2.8K20

SpringBoot中@Transaction在不同MySQL引擎下的差异性

在springboot进行事务测试的时候,发现事务没有生效,在方法上添加了@Transactional注解并让方法先执行插入操作,接着再抛出个异常,触发事务回滚,代码如下: @Transactional...在SpringBoot的application.properties配置文件中,加入如下一行配置即可: spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect...in the log or console spring.jpa.show-sql=true spring.jpa.hibernate.naming.implicit-strategy=org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyJpaImpl...spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl...spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect 重新启动测试进程,然后再次执行show create table

1K20

SpringDataJPA+Hibernate在执行executeUpdate()的时候报错 Executing an updatedelete query

System.out.println(sql.toString()); int i = em.createNativeQuery(sql).executeUpdate(); return i; } 然后servicecontroller...***.executor.request.worker.AsyncRequestTask - 业务执行线程抛出异常:{date=2019-06-17 17:21:45, exceptionStack=javax.persistence.TransactionRequiredException...: Executing an update/delete query at org.hibernate.query.internal.AbstractProducedQuery.executeUpdate...反正是检查了一遍自己所有的代码,确认不是自己的问题后,才开始寻找大神们的解决方法,最后的最后,翻阅了各种“没有用、或者不相关”的内容后,在小小的一个评论里发现了某大神的身影。...这就涉及到官方的问题了:jpa官方文档:https://docs.spring.io/spring-data/jpa/docs/current/reference/html/ 参考文章 https://

4.5K10

Spring Boot2 系列教程(二十三)理解 Spring Data Jpa

其实这个话题松哥以前零零散散的介绍过,在我的书里也有介绍过,但是在公众号中还没大伙聊过,因此本文就和大家来仔细聊聊 Spring Data Jpa! 本文大纲: ? 1....1.1.2 JPA Hibernate 的关系 JPAHibernate 的一个抽象(就像 JDBC JDBC 驱动的关系); JPA 是规范:JPA 本质上就是一种 ORM 规范,不是...环境下,Spring Data Jpa 要怎么配置,配置完成后,用法 Spring Boot 中的用法是一致的。...注意: JPQL 不支持使用 INSERT 方法的返回值应该是 int,表示更新语句所影响的行数 在调用的地方必须加事务没有事务不能正常执行 默认情况下, Spring Data 的每个方法上有事务,...他们不能完成修改操作 说到这里,再来顺便说说 Spring Data 中的事务问题: Spring Data 提供了默认的事务处理方式,即所有的查询均声明为只读事务

2K10
领券