如果JPA提示Executing an update/delete query,那是一定是因为Service层没有加@Transactional和再方法加@Modifying吧。
异常场景
spring-boot2+jpa执行新增修改删除操作时:
public interface UserRepository extends JpaRepository<User , Integer>{
@Modifying
@Query(value="update User c set c.state = ?1,c.lastupdatetime = ?2 where c.user_no= ?3")
void updateUser(int state,Date nowDate,String user_no);
}
1
2
3
4
5
6
7
异常: Executing an update/delete query
解决方案
因为jpa要求,’没有事务支持,不能执行更新和删除操作’。
所以反过来讲,就是在Service层或者Repository层上必须加@Transactional,来代表这是一个事务级别的操作,增删改查除了查都是事务级别的,就当这是一个规范也是ok的。