首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

在给一个数据库访问类写单元测试时,出现了table or view does not exist异常

2012-03-23 
在给一个数据库访问类写单元测试时,出现了table or view does not exist错误错误完整提示XML codeorg.spri

在给一个数据库访问类写单元测试时,出现了table or view does not exist错误
错误完整提示

XML code
org.springframework.jdbc.BadSqlGrammarException: SqlMapClient operation; bad SQL grammar []; nested exception is com.ibatis.common.jdbc.exception.NestedSQLException:   --- The error occurred while applying a parameter map.  --- Check the MS-RPT-DEV-DETAIL-EFFECT-COUNT-FOR-PAGING-InlineParameterMap.  --- Check the statement (query failed).  --- Cause: java.sql.SQLException: ORA-00942: table or view does not exist    at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:220)    at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:72)    at org.springframework.orm.ibatis.SqlMapClientTemplate.execute(SqlMapClientTemplate.java:212)    at org.springframework.orm.ibatis.SqlMapClientTemplate.queryForObject(SqlMapClientTemplate.java:271)    at com.taobao.union.usc.dal.imp.IbatisRptCpsDevDetailEffectImpl.getItems(IbatisRptCpsDevDetailEffectImpl.java:45)    at com.taobao.union.usc.dal.imp.IbatisRptCpsDevDetailEffectImpl.findDevDetailEffect(IbatisRptCpsDevDetailEffectImpl.java:27)    at com.taobao.union.usc.dal.imp.IbatisRptCpsDevDetailEffectImplTest.testFindDevDetailEffect(IbatisRptCpsDevDetailEffectImplTest.java:27)    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)    at java.lang.reflect.Method.invoke(Unknown Source)    at junit.framework.TestCase.runTest(TestCase.java:168)    at junit.framework.TestCase.runBare(TestCase.java:134)    at org.springframework.test.ConditionalTestCase.runBare(ConditionalTestCase.java:76)    at junit.framework.TestResult$1.protect(TestResult.java:110)    at junit.framework.TestResult.runProtected(TestResult.java:128)    at junit.framework.TestResult.run(TestResult.java:113)    at junit.framework.TestCase.run(TestCase.java:124)    at junit.framework.TestSuite.runTest(TestSuite.java:232)    at junit.framework.TestSuite.run(TestSuite.java:227)    at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:79)    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:49)    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)Caused by: com.ibatis.common.jdbc.exception.NestedSQLException:   --- The error occurred while applying a parameter map.  --- Check the MS-RPT-DEV-DETAIL-EFFECT-COUNT-FOR-PAGING-InlineParameterMap.  --- Check the statement (query failed).  --- Cause: java.sql.SQLException: ORA-00942: table or view does not exist    at com.ibatis.sqlmap.engine.mapping.statement.MappedStatement.executeQueryWithCallback(MappedStatement.java:201)    at com.ibatis.sqlmap.engine.mapping.statement.MappedStatement.executeQueryForObject(MappedStatement.java:120)    at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForObject(SqlMapExecutorDelegate.java:518)    at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForObject(SqlMapExecutorDelegate.java:493)    at com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.queryForObject(SqlMapSessionImpl.java:106)    at org.springframework.orm.ibatis.SqlMapClientTemplate$1.doInSqlMapClient(SqlMapClientTemplate.java:273)    at org.springframework.orm.ibatis.SqlMapClientTemplate.execute(SqlMapClientTemplate.java:209)    ... 24 moreCaused by: java.sql.SQLException: ORA-00942: table or view does not exist    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)    at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)    at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288)    at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:745)    at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:216)    at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:810)    at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1039)    at oracle.jdbc.driver.T4CPreparedStatement.executeMaybeDescribe(T4CPreparedStatement.java:850)    at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1134)    at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3339)    at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:3445)    at org.apache.commons.dbcp.DelegatingPreparedStatement.execute(DelegatingPreparedStatement.java:256)    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)    at java.lang.reflect.Method.invoke(Unknown Source)    at com.ibatis.common.jdbc.logging.PreparedStatementLogProxy.invoke(PreparedStatementLogProxy.java:62)    at $Proxy1.execute(Unknown Source)    at com.ibatis.sqlmap.engine.execution.SqlExecutor.executeQuery(SqlExecutor.java:185)    at com.ibatis.sqlmap.engine.mapping.statement.MappedStatement.sqlExecuteQuery(MappedStatement.java:221)    at com.ibatis.sqlmap.engine.mapping.statement.MappedStatement.executeQueryWithCallback(MappedStatement.java:189)    ... 30 more 


使用ibatIS访问的数据库,在pl/sql里访问那个表没有任何问题。
第一次做,不知道大神们还需要什么代码。

[解决办法]
探讨

你提出的问题很准确。。。
这个问题我已经解决了。。。
是ibatiS自身的问题。。
他在定位数据库的时候,貌似只能定位到ip地址,对服务没有准确定位。
因为每次他注入给我的数据库,都是同一个ip下的另一个数据源。
这是个很蛋疼,但却很考验人的问题。。。
我还要仔细看ibatIS的代码才能确定问题。

热点排行