【发布时间】: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