簡介
使用jpa進行update操作主要有兩種方式:
1、調用保存實體的方法
1)保存一個實體:repository.save(T entity)
2)保存多個實體:repository.save(Iterable<T> entities)
3)保存並立即刷新一個實體:repository.saveAndFlush(T entity)
注:若是更改,entity中必須設置了主鍵字段,不然不能對應上數據庫中的記錄,變成新增(數據庫自動生成主鍵)或報錯(數據庫不自動生成主鍵)了
2、@Query注解,自己寫JPQL語句
例:
@Modifying
@Query("update ShopCoupon sc set sc.deleted = true where sc.id in :ids")
public void deleteByIds(@Param(value = "ids") List<String> ids);
注:
1)update或delete時必須使用@Modifying對方法進行注解,才能使得ORM知道現在要執行的是寫操作
2)有時候不加@Param注解參數,可能會報如下異常:
org.springframework.dao.InvalidDataAccessApiUsageException: Name must not be null or empty!; nested exception i is Java.lang.IllegalArgumentException: Name must not be null or empty!