最近项目中使用Spring data jpa 踩过的坑

Posted mrliwee

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最近项目中使用Spring data jpa 踩过的坑相关的知识,希望对你有一定的参考价值。

最近在做一个有关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 踩过的坑的主要内容,如果未能解决你的问题,请参考以下文章

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

随记Spring Data JPA的几个坑

Spring Boot项目使用spring data jpa项目检索用户

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

Spring boot+Mysql+Spring data JPA一个Web的Demo

学习Spring-Data-Jpa(二十)---@EnableJpaRepositories