我正在启动我的应用程序并在启动时在日志中收到以下错误。奇怪的是我没有得到哪个表丢失?有没有办法可以显示哪个表不存在
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]
答案 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