JPQL执行报错:
org.postgresql.util.PSQLException:查询未返回任何结果
org.postgresql.util.PSQLException: No results returned by the query
分析
在@Query注解中编写JPQL实现 DELETE 和 UPDATE 操作的时候必须加上**@Modifying** 注解,以通知Spring 这是一个DELETE或UPDATE操作。
@Modifying
@Query(value = "UPDATE crsm_call_record SET status = ?2 WHERE bind_id = ?1;",nativeQuery = true)
void updateRecordStatusById(String bindId,Integer status);
再次运行报错
org.springframework.dao.InvalidDataAccessApiUsageException: Executing an update/delete query; nested exception is javax.persistence.TransactionRequiredException: Executing an update/delete query
Caused by: javax.persistence.TransactionRequiredException: Executing an update/delete query
说明
- UPDATE或者DELETE操作需要使用事务,此时需要在Service层的方法上添加事务操作。
- 注意JPQL不支持INSERT操作。
@Slf4j
@Service
@Transactional
public class CrsmCallRecordServiceImpl implements CrsmCallRecordService {
JPQL:Java Persistence Query Language,即JPA查询语句。