Spring Data JPA - 如何创建查询(9)Modifying Queries

本文介绍了如何使用Spring Data JPA实现自定义修改和删除操作,包括使用@Modifying注解创建更新语句的方法及派生删除语句的实践。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

作者简介

陈喆,现就职于中科院某研究所担任副研究员,专注于工业云平台、MES系统的设计与研发。

内容来源:https://docs.spring.io/spring-data/jpa/docs/2.0.9.RELEASE/reference/html/#jpa.modifying-queries

添加自定义修改行为可以参考Custom Implementations for Spring Data Repositories。但该文适用于综合性的自定义功能,如果只使用带有参数绑定的查询语句,也可以通过@Modifying注解query方法创建修改语句。

@Modifying
@Query("update User u set u.firstname = ?1 where u.lastname = ?2")
int setFixedFirstnameFor(String firstname, String lastname);

上面的写法将会触发一个更新操作而非查询操作。当执行完修改操作后,EntityManager会保留过时的实体对象,不会作自动清理,这样可以删除掉EntityManager中未清空的变更。如果希望EntityManager自动清理,将@Modifying注解的clearAutomatically属性设置为true.

派生的删除语句

Spring Data JPA支持派生的删除语句,避免显示声明JPQL语句:

interface UserRepository extends Repository<User, Long> {

  void deleteByRoleId(long roleId);

  @Modifying
  @Query("delete from User u where user.role.id = ?1")
  void deleteInBulkByRoleId(long roleId);
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值