您的位置:首页 > 编程语言 > Java开发

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

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

@Query(value = "delete parcel,parcel_file,ms_files,t_order,route " +
"from parcel left join route on parcel.route_id = route.id" +
" left join t_order on t_order.parcel_id = parcel.id" +
" left join parcel_file on parcel.id = parcel_file.parcel_id" +
" left join ms_files on parcel_file.file_uuid = ms_files.uuid " +
"where parcel.id = ?1", nativeQuery = true)
void deleteByParcelId(Long parcelId);

报错提示:



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

    @Modifying
@Transactional
@Query(value = "delete parcel,parcel_file,ms_files,t_order,route " + "from parcel left join route on parcel.route_id = route.id" + " left join t_order on t_order.parcel_id = parcel.id" + " left join parcel_file on parcel.id = parcel_file.parcel_id" + " left join ms_files on parcel_file.file_uuid = ms_files.uuid " + "where parcel.id = ?1", nativeQuery = true) void deleteByParcelId(Long parcelId);


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

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

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


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息