当前位置: 代码迷 >> 综合 >> could not extract ResultSet; nested exception is org.hibernate.exception.GenericJDBCException: could
  详细解决方案

could not extract ResultSet; nested exception is org.hibernate.exception.GenericJDBCException: could

热度:59   发布时间:2023-12-23 08:01:22.0

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操作。

 

 

  相关解决方案