解决使用Springboot jpa update数据时报错Executing an update:delete query
作者:mmseoamin日期:2024-04-30

解决org.springframework.dao.InvalidDataAccessApiUsageException: Executing an update/delete query; nested exception is javax.persistence.TransactionRequiredException: Executing an update/delete query

使用的Springboot jpa ,使用原生SQL方法实现数据更新时,运行时的报错信息如下:

org.springframework.dao.InvalidDataAccessApiUsageException: Executing an update/delete query; nested exception is javax.persistence.TransactionRequiredException: Executing an update/delete query

因为jpa要求,’没有事务支持,不能执行更新和删除操作’。

遇到如上情况“执行一个更新/删除查询”后面报错“javax的持久类的事务需求异常”通常情况下讲,是没有书写事务,就是在Service层或者Repository层上必须加@Transactional,来代表这是一个事务级别的操作,增删改查除了查都是事务级别的,就当这是一个规范也是ok的。在查询过程中因为不涉及到对于数据库的操作,所以可以不声明事务也能执行。

   @Transactional
    @Query(value="update User u set u.status = ? where u.id = ?")
    @Modifying
    public int updateStatus(String status,Long id);