【问题标题】:Spring hibernate : Could not extract result set metadataSpring休眠:无法提取结果集元数据
【发布时间】:2014-07-16 08:50:28
【问题描述】:

我尝试在我的 Dao 中使用本机查询(从 JpaRepository 扩展),但我得到了这个异常:

org.springframework.orm.jpa.JpaSystemException: Could not extract result set metadata; nested exception is org.hibernate.HibernateException: Could not extract result set metadata

这是我的原生查询:

@Repository
public interface BenchDao extends JpaRepository<Bench, Long> {


@Query(nativeQuery=true,value="UPDATE TF_BENCH SET ISDELETED = 1, SEQ = (select CASE WHEN (min(BENCH.SEQ) < 1) THEN (min(BENCH.SEQ)-1) ELSE -1 END from TF_BENCH BENCH WHERE BENCH.STAGE = (select BENCH.STAGE from TF_BENCH BENCH WHERE id =29302)) WHERE id =29302")
void deleteBench();

当我在 Oracle SQL developerper 上尝试此请求时,它可以工作,但通过 spring 和休眠它不会。

在堆栈跟踪异常中我也有这个消息:

Caused by: java.sql.SQLSyntaxErrorException: ORA-00900: invalid SQL statement

我尝试谷歌搜索异常消息,但一无所获...

【问题讨论】:

  • 您能否发布有关您如何调用deleteBench();的代码
  • 你的查询好像有问题,你试过直接在数据库上执行查询吗?
  • 是的,我试过了,正如我所说:“当我在 Oracle SQL 开发人员上尝试这个请求时,它可以工作”
  • 我是这样调用的:benchDao.deleteBench();
  • 写一个简单的jdbc程序,在数据库上运行这条SQL,看看结果。如果它不起作用,请从那里开始调试。实际错误是由 Oracle 数据库引发的,该数据库通过 jdbc 驱动程序传播到休眠状态,以便帮助您进行诊断。

标签: java sql spring hibernate jpa


【解决方案1】:

我认为更好的解决方案是将@Modifying 注释添加到您的方法中。

查看以下答案的更多信息:Spring Data JPA delete native query throwing exception

【讨论】:

    【解决方案2】:

    我找到了解决方案:如果有人需要:

    @Repository
    public class BenchDaoCustomImpl implements BenchDaoCustom {
    
        @PersistenceContext
        private EntityManager em;
    
        public void deleteBench(Long benchId) {
            this.em.createNativeQuery("UPDATE TF_BENCH SET ISDELETED = 1, SEQ = (select CASE WHEN (min(BENCH.SEQ) < 1) THEN (min(BENCH.SEQ)-1) ELSE -1 END from TF_BENCH BENCH WHERE BENCH.STAGE = (select BENCH.STAGE from TF_BENCH BENCH WHERE id =?0)) WHERE id =?0")
                .setParameter(0, benchId)
                .executeUpdate();
        }
    }   
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-10-02
      • 1970-01-01
      • 2020-11-06
      • 2015-02-18
      • 1970-01-01
      • 2016-10-24
      • 2013-06-13
      相关资源
      最近更新 更多