zoukankan      html  css  js  c++  java
  • spring data jpa执行update和delete语句时报错处理

    之前项目中使用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时用于注释事务

  • 相关阅读:
    状态模式
    maven-war-plugin 插件 web.xml 缺失时忽略
    Java远程方法协议(JRMP)
    Java Singleton的3种实现方式
    浅谈分布式消息技术 Kafka
    浅谈分布式事务
    J2EE开发时的包命名规则,养成良好的开发习惯
    使用Dom4j创建xml文档
    Java HttpClient Basic Credential 认证
    Spring MVC的Post请求参数中文乱码的原因&处理
  • 原文地址:https://www.cnblogs.com/dauber/p/9116252.html
Copyright © 2011-2022 走看看