1报错:could not extract ResultSet; nested exception is org.hibernate.exception.GenericJDBCException: could not extract ResultSet
// 标记资源的statu为 -999
basResourceRepo.updateStatusByResId(recId);
就一个update语句,老报 “无法提取ResultSet”
原来是sql上面要加注解 @Modifying/*** 根据资源id 修改状态* @param resId*/@Modifying @Query(value = "update xxx_table set status = -999 where id =?1",nativeQuery = true) public void updateStatusByResId(String resId);
2.报错:Executing an update/delete query; nested exception is javax.persistence.TransactionRequiredException
/*** 根据资源id 修改状态* @param resId*/ @Transactional @Modifying @Query(value = "update xxx_table set status = -999 where id =?1",nativeQuery = true) public void updateStatusByResId(String resId);
update/delete sql上要加@Transactional
使用原生SQL进行查询
设置nativeQuery=true 即可以使用原生的SQL进行查询@Modifying注解
1、在@Query注解中编写JPQL实现DELETE和UPDATE操作的时候必须加上@modifying注解,以通知Spring Data 这是一个DELETE或UPDATE操作。
2、UPDATE或者DELETE操作需要使用事务,此时需要 定义Service层,在Service层的方法上添加事务操作。
3、注意JPQL不支持INSERT操作。