org.springframework.dao.InvalidDataAccessResourceUsageException:ORA-00942:表或视图不存在

时间:2015-09-18 17:28:43

标签: java spring hibernate

我正在启动我的应用程序并在启动时在日志中收到以下错误。奇怪的是我没有得到哪个表丢失?有没有办法可以显示哪个表不存在

org.springframework.dao.InvalidDataAccessResourceUsageException: ORA-00942: table or view does not exist
; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: ORA-00942: table or view does not exist

    at org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:635) ~[spring-orm-3.1.2.RELEASE.jar:3.1.2.RELEASE]
    at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:104) ~[spring-orm-3.1.2.RELEASE.jar:3.1.2.RELEASE]
    at org.springframework.orm.jpa.JpaTransactionManager.doCommit(JpaTransactionManager.java:516) ~[spring-orm-3.1.2.RELEASE.jar:3.1.2.RELEASE]
    at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:754) ~[spring-tx-3.1.2.RELEASE.jar:3.1.2.RELEASE]
    at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:723) ~[spring-tx-3.1.2.RELEASE.jar:3.1.2.RELEASE]
    at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:394) ~[spring-tx-3.1.2.RELEASE.jar:3.1.2.RELEASE]

1 个答案:

答案 0 :(得分:0)

ORA-00942: table or view does not exist

这意味着您的查询正在尝试使用不存在的表,或者在没有正确访问权限的情况下使用该表。

因此,当您启动应用程序时,会创建一些Spring bean并处理此类查询(您可以从堆栈跟踪中看到Spring tx管理器正在尝试提交当前事务,因此在某些地方此事务已打开)。您应确保所有hibernate实体都具有与您的架构相对应的表。如果您无法保证,也许您可​​以使用<hibernate.hbm2ddl.auto> update </hibernate.hbm2ddl.auto>

hibernate将为您完成工作并创建表格和根据您的实体排序等等。

您还可以通过启用hibernate日志记录来检查发生了什么。您可以通过设置属性&#34; show_sql&#34;来启用if。到&#34; true&#34;在您的persistence.xml或替代使用

<强>的logback

 <logger name="org.hibernate" level="DEBUG" /> 

<强>的log4j

log4j.logger.org.hibernate.SQL=DEBUG