【JPA】@Modifying使用的问题

发布时间 2023-03-27 14:35:08作者: onejay

控制台错误日志:

Caused by: javax.persistence.TransactionRequiredException: Executing an update/delete query

 

DAO层:

    @Modifying
    @Query(nativeQuery = true, value = "DELETE FROM user t WHERE t.user_name= ?1 AND t.user_id = ?2")
    void deleteByUserNameAndUserId(String userName, String userId);

  

Service层:

public Optional<String> deleteUser(String userName, String userId) {
        userRepository.deleteByUserNameAndUserId(userKey, type); 
     // 省略其它业务逻辑
}

 

解决方法:

在DAO层方法上添加@Transactional

    @Modifying
    @Transactional
    @Query(nativeQuery = true, value = "DELETE FROM user t WHERE t.user_name= ?1 AND t.user_id = ?2")
    void deleteByUserNameAndUserId(String userName, String userId);

  

原因:

 

 Spring Data JPA - Reference Documentation