异常 ORA-00942: 表或视图不存在 - 使用休眠会话插入现有表时
Posted
技术标签:
【中文标题】异常 ORA-00942: 表或视图不存在 - 使用休眠会话插入现有表时【英文标题】:exception ORA-00942: table or view does not exist - when inserting into an existing table using hibernate session 【发布时间】:2015-01-08 13:48:47 【问题描述】:将 BLOB 对象插入 Oracle 数据库表时出现以下错误。它不会发生在所有 BLOB 对象上。在插入大量对象时,它们中的大多数在引发错误之前被插入。所以我可以保证该表确实存在。
我们通过简单地保存休眠实体来插入数据。没有使用准备好的语句。我发现这个post 在使用准备好的语句时遇到了同样的错误。任何人都可以在使用普通休眠实体和会话时提供此问题的原因和可能的解决方案。
java.sql.SQLException: ORA-00942: table or view does not exist
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:289)
at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:573)
at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1889)
at oracle.jdbc.ttc7.TTC7Protocol.parseExecuteFetch(TTC7Protocol.java:1093)
at oracle.jdbc.driver.OracleStatement.executeNonQuery(OracleStatement.java:2047)
at oracle.jdbc.driver.OracleStatement.doExecuteOther(OracleStatement.java:1940)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout>> (OracleStatement.java:2709)
at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:589)
at quotecopy.DbConnection.insertIntoDestinationDb(DbConnection.java:591)
at quotecopy.QuoteCopier.main(QuoteCopier.java:72)
【问题讨论】:
检查代码中的表名或模式名 我可以在表中插入值。我尝试将 BLOB 值设置为 null 并且运行良好 【参考方案1】:检查您的表名是否正确。如果正确,则检查数据库登录名/用户 (用于连接到 Oracle)具有访问此表的适当权限。
【讨论】:
我可以在表中插入值。我尝试将 BLOB 值设置为 null 并且运行良好 “我能”是什么意思? “你”在 Java 代码中使用相同的登录名吗?在插入记录作为测试时? 我同意彼得.彼得罗夫的观点。运行 java 代码的操作系统用户和您的交互式登录可能不是同一个用户。就像,如果您使用 '""/""@$SID as sysdba' 登录,那么您当然可以上桌。但是,您在数据库中的应用程序用户可能不是 sys 级用户(我希望如此),因此需要应用授权才能访问该表。 伙计们,我正在使用 Hibernate 持久化一个托管实体。其中一个字段对应于一个 sql blob 对象。我尝试了以下方法。 1) 将对象设置为 null 2) 将空文件转换为 Blob 。在这两种情况下,blob 都被持久化到数据库中。但是,如果我使用稍大的文件,则会收到上述错误。另外,如果我完全放弃托管实体并使用准备好的语句,它工作正常。我想知道当我使用托管实体时,休眠会话有什么不同!以上是关于异常 ORA-00942: 表或视图不存在 - 使用休眠会话插入现有表时的主要内容,如果未能解决你的问题,请参考以下文章
java.sql.SQLSyntaxErrorException:ORA-00942:netbeans 8.0.1 中的表或视图不存在错误消息