Spring-data-jpa 的@modifying注解
在项目的进行中需要通过 @Modifying 注解完成修改操作(注意:不支持新增)
1.之前有一个业务需要先查询一个结果集,然后将满足结果集中某个条件的另外一张表中的字段做一个属性值的更改,这个更改可能是多个的
代码如下

2.SQL语句如下

3.但是执行的过程中,控制台报错,如下

Can not issue data manipulation statements with executeQuery().
4.后来发现没有添加 @Modifying注解
5.聊一聊@Modifying注解的实际使用
例如一下测试
@Modifying @Query("update Person set email = :email where lastName =:lastName")
void updatePersonEmailByLastName(@Param("lastName")String lastName,@Param("email")String email);
执行报错,异常如下,
关键看这行 Caused by: javax.persistence.TransactionRequiredException: Executing an update/delete query,说明我们缺少事务配置。
可以在service实现类上面添加事物注解,也可以在方法上面添加事物注解,或者在xml 文件中添加service事物控制器的管理
@Service
@Transactional
<context:component-scan base-package="com.liwei.springdata.service"></context:component-scan>
总结如下
(1)可以通过自定义的 JPQL 完成 UPDATE 和 DELETE 操作。 注意: JPQL 不支持使用 INSERT;
(2)在 @Query 注解中编写 JPQL 语句, 但必须使用 @Modifying 进行修饰. 以通知 SpringData, 这是一个 UPDATE 或 DELETE 操作
(3)UPDATE 或 DELETE 操作需要使用事务,此时需要定义 Service 层,在 Service 层的方法上添加事务操作;
(4)默认情况下, SpringData 的每个方法上有事务, 但都是一个只读事务。 他们不能完成修改操作。
Spring-data-jpa 的@modifying注解的更多相关文章
- Spring Data JPA 中常用注解
一.java对象与数据库字段转化 1.@Entity:标识实体类是JPA实体,告诉JPA在程序运行时生成实体类对应表 2.@Table:设置实体类在数据库所对应的表名 3.@Id:标识类里所在变量为主 ...
- spring data jpa使用@Transactional注解开启事务后失败不回滚
如题,在数据库批量操作方法上使用@Transactional注解,其中一条数据抛出异常了,却死活不回滚. 批量操作方法是公有的,spring也是默认支持事务的,排除代码层面问题,那么就看看数据库是否支 ...
- Spring Data JPA之@Query注解
比如有个实体类对象,类名为Book,对应数据表的表名为book 1. 一个使用@Query注解的简单例子:占位符?1和?2 @Query(value = "select name,autho ...
- Spring Data Jpa使用@Query注解实现模糊查询(LIKE关键字)
/** * * @param file_name 传入参数 * @return */ @Query(value = "select * from user where name LIKE C ...
- 【Spring】Spring Data JPA
原始JDBC操作数据库 传统JDBC方式实现数据库操作 package com.imooc.util; import java.io.InputStream; import java.sql.*; i ...
- 初入spring boot(七 )Spring Data JPA
Spring Data JPA通过提供基于JPA的Repository极大地减少JPA作为数据访问方案的代码量. 1.定义数据访问层 使用Spring Data JPA建立数据访问层十分简单,只需定义 ...
- Spring Data JPA基本增删改查和JPQL查询(含完整代码和视频连接)
问题:SpringDataJPA怎么使用? 一.考察目标 主要考核SpringDataJPA的用法 二.题目分析 spring data jpa 的使用步骤(下面有具体实现细节) 1.创建maven工 ...
- Spring Boot 2.x 之 Spring Data JPA, Hibernate 5
1. Spring Boot常用配置项 基于Spring Boot 2.0.6.RELEASE 1.1 配置属性类 spring.jpa前缀的相关配置项定义在JpaProperties类中, 1.2 ...
- Spring Data JPA 和MyBatis比较
现在Dao持久层的解决方案中,大部分是采用Spring Data JPA或MyBatis解决方案,并且传统企业多用前者,互联网企业多用后者. Spring Data JPA 是Spring Data ...
- 【spring data jpa】使用spring data jpa 的删除操作,需要加注解@Modifying @Transactional 否则报错如下: No EntityManager with actual transaction available for current thread - cannot reliably process 'remove' call
使用spring data jpa 的删除操作,需要加注解@Modifying @Transactional 否则报错如下: No EntityManager with actual tran ...
随机推荐
- 数据库MongoDB查询语句--持续更新
模糊查询: 包含字符串str : find({'name':/str/i}); {'name':/str/} 以str开头: {'name':/^str/} $in查询: 字段:{ field: ...
- C#,JavaScript两种语言 2048小游戏
<html> <head> <style type="text/css"> .haha { border-width: 2; font-size ...
- CSS中margin与padding的区别
CSS边距属性定义元素周围的空间.通过使用单独的属性,可以对上.右.下.左的外边距进行设置.也可以使用简写的外边距属性同时改变所有的外边距.——W3School 边界(margin):元素周围生成额外 ...
- RabbitMQ 主题(Topic)
我们进步改良了我们的日志系统.我们使用direct类型转发器,使得接收者有能力进行选择性的接收日志,,而非fanout那样,只能够无脑的转发. 虽然使用direct类型改良了我们的系统,但是仍然存在一 ...
- Ubuntu下基于Nginx实现Tomcat集群负载均衡
版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] Nginx是一款HTTP和反向代理服务器,有关它的介绍可以到网上搜一下,很多很多,不再累述.这里,我们记录一下Nginx ...
- XML与 HTML
XML是E4X中定义的一个重要的新类型,侧重于如何结构化描述信息,用它来表现XML结构中任何独立的部分,是一种用于标记电子文件使其具有结构性的标记语言. XML语言被设计用来描述数据,它的焦点是数据的 ...
- Maven-pom.xml详解
(看的比较累,可以直接看最后面有针对整个pom.xml的注解) pom的作用 pom作为项目对象模型.通过xml表示maven项目,使用pom.xml来实现.主要描述了项目:包括配置文件:开发者需要遵 ...
- 【POJ 2503】Babelfish(字符串)
题 给定字典,再询问. 字典与询问之间有一个空行. cin.peek()是一个指针指向当前字符. #include<iostream> #include<string> #in ...
- 做哪些优化,才能让 UITabelView 更顺滑?(转)
原文出处: Alexander Orlov 译文出处:南峰子(@南峰子_老驴) 转载自:ios.jobbole.com/83731/ 我已经在iOS这个最好的移动平台上有几年的开发经验了.在这期间 ...
- ActiveMQ;RabbitMQ;ZeroMQ
中间件类型: Embedded middleware: As the name suggests, this typeof middleware handles embedded applicatio ...