【发布时间】:2021-07-17 08:17:53
【问题描述】:
每次我尝试在我的 spring 应用程序中点击我的 POST 端点之一时,我都会收到此错误,该端点仅调用这 3 个 JPA 保存方法中的 1 个:
save()
saveAll()
saveAndFlush()
org.springframework.dao.InvalidDataAccessResourceUsageException:无法提取结果集; SQL [不适用];嵌套异常是 org.hibernate.exception.SQLGrammarException: could not extract ResultSet …… 引起:java.sql.SQLSyntaxErrorException:ORA-00942:表或视图不存在 …… 原因:oracle.jdbc.OracleDatabaseException: ORA-00942: 表或视图不存在
我想先澄清几点:
- 我通过非表所有者用户登录,该用户已被授予选择、插入、更新和删除权限。我已经在 SQL 客户端中进行了测试,以确认我的用户确实可以访问这 4 个 sql 操作。
- 使用任何其他 JPA 方法(如 找到所有, findAllById, 数数, 等等。甚至是我在 @Repository 类下创建的方法。可以毫无问题地找到和查询表。此外,表或存储库没有任何异常。
- 当使用表的“所有者”用户时,我能够成功保存任何数据而不会出现问题。
- 表/存储库作为依赖项从其他项目导入。
我发现与此特定 JPA 保存问题相关的唯一内容是 this 文章,其中提到了这一点
Hibernate,PostgreSQL:无法提取结果集,SQLState,您的实际问题很简单:您在只读事务中调用了 save() 操作。但是,因为你吞下了你的例外: /p>
我不知道从哪里开始尝试解决此错误。这些是相关依赖代码的版本,虽然我也玩过这些,但没有任何运气。
-
org.hibernate:hibernate-core 5.4.30.Final(试过5.4.21.Final)
-
org.hibernate.common:hibernate-commons-annotations 5.1.2.Final(试过 5.1.0.Final)
-
org.springframework.data:spring-data-jpa 2.4.8(试过2.3.4.Release)
我也使用它作为我的属性,它确实成功地验证了我的数据库架构,否则服务将在启动时失败。我看到有人说要使用“更新”,但这没有帮助,不应该是解决方案。
spring.jpa.hibernate.ddl-auto=validate
感谢任何帮助。我不认为这是代码问题,但同时我在 oracle DB 端找不到任何看起来不寻常的东西。
【问题讨论】:
标签: sql spring oracle hibernate jpa