码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2018-05-31 14:46:06      阅读:352      评论:0      收藏:0      [点我收藏+]

标签:font   word   water   span   copy   data   details   sdn   TE   

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

 

[java] view plain copy
 
  1. @Query(value = "delete parcel,parcel_file,ms_files,t_order,route " +  
  2.             "from parcel left join route on parcel.route_id = route.id" +  
  3.             " left join t_order on t_order.parcel_id = parcel.id" +  
  4.             " left join parcel_file on parcel.id = parcel_file.parcel_id" +  
  5.             " left join ms_files on parcel_file.file_uuid = ms_files.uuid " +  
  6.             "where parcel.id = ?1", nativeQuery = true)  
  7.     void deleteByParcelId(Long parcelId);  

报错提示:

技术分享图片

 最后查阅资料发现了解决办法,同时加上注解@Modifying和Transactional

[java] view plain copy
 
  1. @Modifying  
  2. @Transactional  
  3. @Query(value = "delete parcel,parcel_file,ms_files,t_order,route " +  
  4.         "from parcel left join route on parcel.route_id = route.id" +  
  5.         " left join t_order on t_order.parcel_id = parcel.id" +  
  6.         " left join parcel_file on parcel.id = parcel_file.parcel_id" +  
  7.         " left join ms_files on parcel_file.file_uuid = ms_files.uuid " +  
  8.         "where parcel.id = ?1", nativeQuery = true)  
  9. void deleteByParcelId(Long parcelId);  


加上两个注解后问题成功解决了,只加上其中任意一个注解还是会报错,只有同时加上两个注解时才可以。

@Modifying注解与@Query一起使用表示将查询操作标识为修改查询,这样框架最终会生成一个更新的操作,而非查询

@Transactional:spring整合jpa时用于注释事务

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

标签:font   word   water   span   copy   data   details   sdn   TE   

原文地址:https://www.cnblogs.com/dauber/p/9116252.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!