最近在做一个有关OA项目中使用spring data JPA 操作数据库,结果遇到了补个不可思议的麻烦。困惑了好久。

首先看一下问题吧,这就是当时测试“设置角色时,需要首先删除该用户已经拥有的角色时”报错如下图:

一开始遇到这个问题 并没有感觉到有多大问题,后来就找了几个小时还是没有结果....后来在网上搜了好多还是没有找到结果...这时的自己就崩溃了,于是就去网上

搜索有关spring data jpa 相关Insert 和delete 及update的等操作问题,结果一眼就看到了问题的额所在。

看一下我的sql

再三检查了我的sql 发现没有添加  @Modifying注解

于是 我赶紧在业务层方法上添加了一个事物  @Transactional 顺便子sql上也加上了注解@Modifying

测试了一下结果就可以了;

总结一下:

1)可以通过自定义的 SQL 完成 UPDATE 和 DELETE 操作。 注意: JPA 不支持使用 INSERT; 
2)在 @Query 注解中编写 SQL 语句, 但必须使用 @Modifying 进行修饰. 以通知 SpringData, 这是一个 UPDATE 或 DELETE 操作 
3)UPDATE 或 DELETE 操作需要使用事务,此时需要定义 Service 层,在 Service 层的方法上添加事务操作; 
4)默认情况下, SpringData 的每个方法上有事务, 但都是一个只读事务。 他们不能完成修改操作。

最近项目中使用Spring data jpa 踩过的坑的更多相关文章

  1. SpringBoot中使用Spring Data Jpa 实现简单的动态查询的两种方法

    软件152 尹以操 首先谢谢大佬的简书文章:http://www.jianshu.com/p/45ad65690e33# 这篇文章中讲的是spring中使用spring data jpa,使用了xml ...

  2. Hibernate中使用Spring Data JPA

    一.配置文件的方式 1.pom.xml中引入相关依赖 <properties> <project.build.sourceEncoding>UTF-8</project. ...

  3. 关于在项目中使用spring data redis与jedis的选择

    项目中需要用到redis,主要用来作为缓存,redis的客户端有两种实现方式,一是可以直接调用jedis来实现,二是可以使用spring data redis,通过spring的封装来调用. 应该使用 ...

  4. Spring Data JPA系列3:JPA项目中核心场景与进阶用法介绍

    大家好,又见面了. 到这里呢,已经是本SpringData JPA系列文档的第三篇了,先来回顾下前面两篇: 在第1篇<Spring Data JPA系列1:JDBC.ORM.JPA.Spring ...

  5. 【spring data jpa】启动报错:nested exception is java.util.NoSuchElementException

    spring boot项目中 使用spring data jpa 启动报错: org.springframework.beans.factory.UnsatisfiedDependencyExcept ...

  6. spring data jpa执行update和delete语句时报错处理

    之前项目中使用spring data jpa时,遇到删除记录的需求时,主要利用spring data中自带的delete()方法处理,最近在dao层使用delete sql语句时报错,代码如下: @Q ...

  7. Spring boot 中Spring data JPA的应用(一)

    最近一直在研究Spring Boot,今天为大家介绍下Spring Data JPA在Spring Boot中的应用,如有错误,欢迎大家指正. 先解释下什么是JPA JPA就是一个基于O/R映射的标准 ...

  8. Spring Boot 中应用Spring data mongdb

    摘要 本文主要简单介绍下如何在Spring Boot 项目中使用Spring data mongdb.没有深入探究,仅供入门参考. 文末有代码链接 准备 安装mongodb 需要连接mongodb,所 ...

  9. 干货|一文读懂 Spring Data Jpa!

    有很多读者留言希望松哥能好好聊聊 Spring Data Jpa!其实这个话题松哥以前零零散散的介绍过,在我的书里也有介绍过,但是在公众号中还没和大伙聊过,因此本文就和大家来仔细聊聊 Spring D ...

随机推荐

  1. “帮你”APP——NABCD需求分析

    1.你的创意解决了用户的什么需求?(N) 本学校已存在的失物招领.表白墙.二手市场等QQ群普遍存在信息冗杂,时效性差等缺点.不能充分发挥信息有效性的,我们的“帮你”APP能够充分发挥信息的有效性,让失 ...

  2. sql 判断两条数据库查询语句结果是否有重复

    select 身份证号 from (select 身份证号 from 表1 where 考试名称= 'aaa'union allselect 身份证号 from 表2 where 考试名称= 'bbb ...

  3. Django+xadmin的安装与配置

    已安装python3.6.5rcl 已安装django-1.10.8(后续有错) 一.安装xadmin 1.下载xadmin,下载地址:https://github.com/sshwsfc/xadmi ...

  4. ceph-deploy部署过程

    [root@ceph-1 my_cluster]# ceph-deploy --overwrite-conf osd create ceph-1 --data data_vg1/data_lv1 -- ...

  5. Functional Language

    1.What is functional language? 函数式语言(functional language)一类程序设计语言,是一种非冯·诺伊曼式的程序设计语言.函数式语言主要成分是原始函数.定 ...

  6. 1、let const

    1.作用域的概念 es6之前 es5 分为 全局作用域 函数作用域 es6 新增块级作用域 2.let const 与 var 区别 用var 可以无报错 此代码报错 引出 块级作用域 用 {} 包起 ...

  7. Spinner 默认选中

    https://blog.csdn.net/u014737138/article/details/49495847 spinner.setSelection(2,true); 就这样一行代码,很重要 ...

  8. 使用netty HashedWheelTimer构建简单延迟队列

    背景 最近项目中有个业务,需要对用户新增任务到期后进行业务处理.使用定时任务定时扫描过期时间,浪费资源,且不实时.只能使用延时队列处理. DelayQueue 第一想到的是java自带的延时队列del ...

  9. PhoenixFD插件流体模拟——UI布局【Export】详解

    Liquid Export 流体导出 本文主要讲解Export折叠栏中的内容.原文地址:https://docs.chaosgroup.com/display/PHX3MAX/Liquid+Expor ...

  10. 【java】多个对象的序列化和反序列化

    当我们需要序列化多个对象的时候,可以采用集合把多个对象放到集合中,然后序列化整个集合. 而我们要反序列化的时候,就使用集合接收反序列化后的对象 如: List<Student> stude ...