【发布时间】:2020-04-28 04:07:51
【问题描述】:
当使用 JPA 查询更新时,如何构建一个可以返回更新数据的 JPA 方法? 我创造了这样的东西。
@Transactional
@Modifying
@Query("UPDATE User u SET u.isActive = true"
+ " WHERE u.isActive = false AND u.reactivateTime <= currentTime"
+ " AND u.reactivateTime IS NOT null")
int reactivateUser(@Param("currentTime") ZonedDateTime currentTime);
但是,我想要的是返回用户列表。如果我直接把它改成这样的
@Transactional
@Modifying
@Query("UPDATE User u SET u.isActive = true"
+ " WHERE u.isActive = false AND u.reactivateTime <= currentTime"
+ " AND u.reactivateTime IS NOT null")
List<User> reactivateUser(@Param("currentTime") ZonedDateTime currentTime);
会变成这样的错误。
IllegalStateException: org.hibernate.hql.internal.QueryExecutionRequestException: Not supported for DML operations
【问题讨论】:
-
更新操作没有获取任何数据
标签: java spring spring-boot jpa spring-data-jpa