3

编辑:修复!往下看

所以我在 SQL Developer 中测试了查询,它工作正常。但是,在我的实现中,运行不会将数据加载到列表中并吐出此错误:

org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback; 错误的 SQL 语法 [select columnname,displayname, viewsortorder,capsdisind,window, DIS FIELDID , (select 1 from WEB_CUSTDISABLEDFIELDS where custid =? AND A.DISFIELD ID = WEB_CUSTDISABLEDFIELDS.DISFIELDID) from web_DISABLEDFIELDS A ]; 嵌套异常是 java.sql.SQLSyntaxErrorException: ORA-00942: 表或视图不存在
在 org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.d oTranslate(SQLErrorCodeSQLExceptionTranslator.java:220) 在 org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslat or.translate(AbstractFallbackSQLExceptionTranslator.java:72) 在 org.springframework.jdbc.core.JdbcTemplate .execute(JdbcTemplate.java: 607) at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:64 1) at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:67 0) at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:67 8) 在 org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:71 0) 在 sun.reflect.NativeMethodAccessorImpl。sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.Native Method.invoke0(Native Method) at java.lang.reflect.Method.invoke(Unknown Source) at flex.messaging.services。 remoting.adapters.JavaAdapter.invoke(JavaAdap ter.java:421) 在 flex.messaging.services.RemotingService.serviceMessage(RemotingServic e.java:183) 在 flex.messaging.MessageBroker.routeMessageToService(MessageBroker.java :1503) 在 flex .messaging.endpoints.AbstractEndpoint.serviceMessage(AbstractEndp oint.java:884) 在 flex.messaging.endpoints.amf.MessageBrokerFilter.invoke(MessageBroker Filter.java:121) 在 flex.messaging.endpoints.amf.LegacyFilter.invoke(LegacyFilter .java:15 8) 在 flex.messaging.endpoints.amf.SessionFilter.invoke(SessionFilter.java: 44) 在 flex.messaging.endpoints.amf.BatchProcessFilter.invoke(BatchProcessFi lter.java:67) 在 flex.messaging.endpoints.amf .SerializationFilter.invoke(Serialization Filter.java:146) at flex.messaging.endpoints.BaseHTTPEndpoint.service(BaseHTTPEndpoint.ja va:278) at flex.messaging.MessageBrokerServlet.service(MessageBrokerServlet.java :322) at javax.servlet。 http.HttpServlet.service(HttpServlet.java:722) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl icationFilterChain.java:304) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF ilterChain.java:210) 在 org.apache.catalina.core.StandardContextValve.invoke(StandardContextV alve.java:175) 在 org.apache.catalina.authenticator 的 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV alve.java:224) .AuthenticatorBase.invoke(Authentica torBase.java:472) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j ava:164) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j ava: 100)在 org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal ve.java:118)在 org.apache.catalina.connector 的 org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)。 CoyoteAdapter.service(CoyoteAdapter.java 一个:405) 在 org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:515) 在 org.apache.tomcat.util 的 org.apache.coyote.http11.Http11NioProcessor.process(Http11NioProcesso r.java:316)。 net.NioEndpoint$SocketProcessor.run(NioEndpoint t.java:1544) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang。 Thread.run(Unknown Source) 原因:java.sql.SQLSyntaxErrorException: ORA-00942: oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.ja va:91) at oracle.jdbc.driver 中不存在表或视图.DatabaseError.newSQLException(DatabaseError.java:1 12) 在 oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java :173) 在 oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:455) 在 oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer. java:413) 在 oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:1030) 在 oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:194) 在 oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPrepare dStatement.java:785) 在 oracle.jdbc.driver.T4CPreparedStatement.executeMaybeDescribe(T4CPrepa redStatement.java:860) 在 oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1186) 在 oracle.jdbc.driver.OraclePreparedStatement .在 org.springframework 的 oracle.jdbc.driver.OraclePreparedStatementWrapper.executeQuery(Oracle PreparedStatementWrapper.java:1490) 的 oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePrepare dStatement.java:3425) 的 executeInternal(OraclePrep aredStatement.java:3381)。 jdbc.core.JdbcTemplate$1.doInPreparedStatement(Jd bcTemplate.java:648) at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java: 591) ... 还有 39 个jdbc.core.JdbcTemplate$1.doInPreparedStatement(Jd bcTemplate.java:648) at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java: 591) ... 39 更多jdbc.core.JdbcTemplate$1.doInPreparedStatement(Jd bcTemplate.java:648) at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java: 591) ... 39 更多

我已经搜索了这个错误的多个问题,但它们似乎都没有解决与地雷相同的问题。我正在使用 Oracle SQL。

也许有人以前遇到过这个问题?任何帮助表示赞赏。谢谢!

修复了问题

问题是桌子。他们只需要访问数据库中的权限即可。

我所做的是这样的:

grant all on sa.table to public
/
create public synonym table for sa.table
/
grant all on sa.table2 to public
/
create public synonym table2 for sa.table2
/
4

1 回答 1

2

您的 Web 应用程序很可能登录到与您的表不同的架构

尝试在 sql 语句中明确指定模式。IE :

SELECT a, b FROM user.TABLE
于 2012-10-23T23:00:40.013 回答