1. 通过 @Modifying 注解可以完成修改(UPDATE或者DELETE)操作(注意:不支持新增)
  • SpringDataJpa——JpaRepository增删改查(请参考):http://blog.csdn.net/fly910905/article/details/78557110

示例

  1. package com.newcapec.dao.repository.pay;
  2. import com.newcapec.dao.domain.UserEnroll;
  3. import org.springframework.data.jpa.repository.JpaRepository;
  4. import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
  5. import org.springframework.data.jpa.repository.Modifying;
  6. import org.springframework.data.jpa.repository.Query;
  7. import org.springframework.data.repository.query.Param;
  8. import org.springframework.stereotype.Repository;
  9. import org.springframework.transaction.annotation.Transactional;
  10. import java.util.Date;
  11. import java.util.List;
  12. /**
  13. * @Title: 用户报名缴费信息--DAO
  14. * @ClassName: com.newcapec.dao.repository.pay.PayRepository.java
  15. * @Description:
  16. *
  17. * @Copyright 2016-2017 - Powered By 研发中心
  18. * @author: FLY
  19. * @date: 2017-12-16 12:35
  20. * @version V1.0
  21. */
  22. @Repository
  23. public interface PayRepository extends JpaRepository<UserEnroll, Long>,JpaSpecificationExecutor<UserEnroll> {
  24. /**
  25. * @Title: 更新用户报名缴费信息,为支付成功
  26. * @methodName: updateUserEnrollPaySuccess
  27. * @param paytime
  28. * @param orderno
  29. * @param localOrderno
  30. * @return int
  31. * @Description:
  32. *
  33. * @author: FLY
  34. * @date: 2017-12-18 8:41
  35. */
  36. @Transactional(rollbackFor = Exception.class)
  37. @Modifying
  38. @Query("UPDATE UserEnroll SET payflag = 2 , paytime = :paytime , orderno = :orderno WHERE localOrderno = :localOrderno")
  39. int updateUserEnrollPaySuccess(@Param("paytime")Date paytime, @Param("orderno")String orderno , @Param
  40. ("localOrderno")String localOrderno);
  41. }
测试:
  1. package com.newcapec.dao;
  2. import com.newcapec.dao.domain.UserEnroll;
  3. import com.newcapec.dao.repository.pay.PayRepository;
  4. import org.junit.Assert;
  5. import org.junit.Test;
  6. import org.junit.runner.RunWith;
  7. import org.springframework.beans.factory.annotation.Autowired;
  8. import org.springframework.boot.test.context.SpringBootTest;
  9. import org.springframework.test.context.junit4.SpringRunner;
  10. import java.util.Date;
  11. import java.util.List;
  12. /**
  13. * @Title: 用户报名缴费信息--DAO测试
  14. * @ClassName: com.newcapec.dao.PayRepositoryTest.java
  15. * @Description:
  16. *
  17. * @Copyright 2016-2017 - Powered By 研发中心
  18. * @author: FLY
  19. * @date: 2017-12-16 13:29
  20. * @version V1.0
  21. */
  22. @RunWith(SpringRunner.class)
  23. @SpringBootTest
  24. public class PayRepositoryTest {
  25. @Autowired
  26. PayRepository payRepository;
  27. /**
  28. * @Title: 更新用户报名缴费信息,为支付成功
  29. * @methodName: testUpdateUserEnrollPaySuccess
  30. * @param
  31. * @return void
  32. * @Description:
  33. *
  34. * @author: 王延飞
  35. * @date: 2017-12-18 8:21
  36. */
  37. @Test
  38. public void testUpdateUserEnrollPaySuccess() {
  39. int i = payRepository.updateUserEnrollPaySuccess(new Date(), "2017121613345689", "2017121613345689");
  40. UserEnroll userEnroll = payRepository.findByLocalOrderno("2017121613345689");
  41. System.out.println("更新条数:"+i);
  42. Assert.assertEquals("2017121613345689", userEnroll.getOrderno());
  43. }
  44. }
注意:

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

JPA:@Modifying注解(UPDATE或者DELETE)相关推荐

  1. JPA @Modifying注解 jpql语句更新以及删除

    JPA @Modifying注解解释 这个注解在JPA中经常出现,是为了通知jpa,这是一个update或者delete操作,在更新或者删除操作时,此注解必须加,否则就会抛出异常,注:jpa不支持in ...

  2. JPA利用@Modifying进行update和delete操作

    //可以通过自定义的JPQL语句完成update和delete操作,但是在此处的JPQL不支持insert操作//在@Query注解中编写JPQL语句,必须用@Modify注解修饰,通知SpringD ...

  3. JPA @Modifying注解

    这个注解是通知jpa,这是一个update或者delete操作,在更新或者删除操作时,此注解必须加,否则会抛出下面异常 org.springframework.dao.InvalidDataAcces ...

  4. JPA 2.1: Bulk Update and Delete

    为什么80%的码农都做不了架构师?>>>    JPA 2.1: Bulk Update and Delete In the JPA 2.0 and early version, i ...

  5. Jpa数据操作以及@Query和@Modifying注解使用

    一. Jpa接口自定义sql注解@Query @Query注解,使用注解有两种方式,一种是JPQL的SQL语言方式,一种是原生SQL的语言,略有区别,代码中具体区别是nativeQuery 属性是否为 ...

  6. @Modifying注解误用错误

    在数据访问层中写了一个查询语句,发现调用的时候报错,原代码如下. /*** 检查用户ID是否存在* @param userId* @return*/@Modifying@Query(value = & ...

  7. @Modifying注解和@Transactional注解?

    JPA中自定义的插入.更新.删除方法为什么要添加@Modifying注解和@Transactional注解? 前几天,有个同事在使用JPA的自定义SQL方法时,程序一直报异常,捣鼓了半天也没能解决,咨 ...

  8. JPA基础知识----JPA 基本注解,JPA API

    JPA 是什么     Java Persistence API:用于对象持久化的 API     Java EE 5.0 平台标准的 ORM 规范,使得应用程序以统一的方式访问持久层 JPA和Hib ...

  9. @Modifying注解

    Modifying注解   涉及到数据修改操作,可以使用 @Modifying 注解,@Query 与 @Modifying 这两个 annotation一起声明,可定义个性化更新操作,例如涉及某些字 ...

最新文章

  1. eclipse中的git安装与使用
  2. BZOJ 1878 HH的项链
  3. Hibernate3 第一天
  4. 机房中铅酸蓄电池的性能参数及优缺点
  5. 信息系统项目管理师-常用英文术语整理
  6. 你家猫砸东西是不是也专挑贵的砸?
  7. mysql 去重 根据id_点赞功能,用MySQL还是Redis
  8. Android内存泄露测试
  9. war压缩命令_宝塔面板linux版解压WAR文件时,如何解压的三种方法介绍
  10. STM32一体化步进电机驱动器控制步进电机
  11. 利用不共线三点求解并联机构动系在定系中的位姿的另一种解法
  12. 分枝定界法(Branch-and-Cut)
  13. word文档里怎么撤回上一步的操作
  14. 英特尔400系列服务器芯片组,驱动支持列表再立功 Intel 400系列芯片组曝光
  15. MT6797处理器怎么样?Helio X20处理器资料介绍
  16. Newtonsoft.Json.Linq 简单使用
  17. 2018上海居住证续签
  18. CSS面试须知--盒子模型、浮动及定位
  19. 计算机网络第一章作业(第8版 谢希仁)
  20. SNAT和DNAT原理及配置方法

热门文章

  1. 爬新浪国内新闻网的某个新闻的评论
  2. 六月三日三条搞笑短信笑话分享
  3. 2013年新年祝福视频奖表彰
  4. python:实现二进制转十进制算法(附完整源码)
  5. RDMA编程1 建立侦听
  6. MySQL 新增修改和删除
  7. Hadoop国内镜像下载:急速
  8. 科技大佬走进直播间秀的是什么?苏宁真是6得不行!
  9. AD域用户密码重置_AD域自助管理之道
  10. Ubuntu下OpenGrok的安装配置