【问题标题】:ERROR 9952 --- [nio-8081-exec-1] o.h.engine.jdbc.spi.SqlExceptionHelper : ORA-00923: FROM keyword not found where expected错误 9952 --- [nio-8081-exec-1] o.h.engine.jdbc.spi.SqlExceptionHelper : ORA-00923: FROM 关键字未在预期位置找到
【发布时间】:2020-02-03 06:17:28
【问题描述】:

我正在尝试在我的 Spring Boot 应用程序中从数据库中获取数据。我正在使用休眠库。下面是我的实体类:

@SuppressWarnings("serial")
@Entity
@Table(name = "MU_GM_CIRCULARS")
public class GmCirculars extends ParentEntity implements Serializable {

    private BigDecimal id;
    private Date createdOn;
    private String title;
    private BigDecimal serialNo;
    private BigDecimal year;
    private BigDecimal active;
    private BigDecimal organizationId;
    private BigDecimal showOnDashboard;

    public GmCirculars() {
        super();
    }

    public GmCirculars(BigDecimal id) {
        super();
        this.id = id;
    }


    public GmCirculars(BigDecimal id, BigDecimal createdById, Date createdOn, String title, BigDecimal serialNo,
            BigDecimal year ,BigDecimal documentId, BigDecimal typeId) {
        super();
        this.id = id;
        this.createdOn = createdOn;
        this.title = title;
        this.serialNo = serialNo;
        this.year = year;

    }

    @Id
    @Column(name = "ID")
    @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="MU_GM_CIRCULARS_SEQ")
    @SequenceGenerator(name="MU_GM_CIRCULARS_SEQ",sequenceName="MU_GM_CIRCULARS_SEQ",allocationSize=1)
    public BigDecimal getId() {
        return id;
    }

    public void setId(BigDecimal id) {
        this.id = id;
    }

    @Column(name="created_on")
    public Date getCreatedOn() {
        return createdOn;
    }

    public void setCreatedOn(Date createdOn) {
        this.createdOn = createdOn;
    }

    @Column(name="title")
    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    @Column(name="serial_no")
    public BigDecimal getSerialNo() {
        return serialNo;
    }

    public void setSerialNo(BigDecimal serialNo) {
        this.serialNo = serialNo;
    }

    @Column(name="year")
    public BigDecimal getYear() {
        return year;
    }

    public void setYear(BigDecimal year) {
        this.year = year;
    }

    @Column(name = "org_id")
    public BigDecimal getOrganizationId() {
        return organizationId;
    }

    public void setOrganizationId(BigDecimal organizationId) {
        this.organizationId = organizationId;
    }

    @Column(name="show_on_dashboard")
    public BigDecimal getShowOnDashboard() {
        return showOnDashboard;
    }

    public void setShowOnDashboard(BigDecimal showOnDashboard) {
        this.showOnDashboard = showOnDashboard;
    }

    @Column(name = "active")
    public BigDecimal isActive() {
        return active;
    }

    public void setActive(BigDecimal active) {
        this.active = active;
    }
}

这是获取数据的方法的类:

@Repository
@Transactional
@SuppressWarnings("unchecked")
public class GmCircularsDaoImpl extends ParentDAO implements IGmCircularsDAO {

@Override
public List<GmCirculars> find(GmCirculars obj, boolean activeOnly, int startOffset, int maxRows) {
    Session session = null;
    List<GmCirculars> discounts = null;

    try {
        if (null != obj) {

            session= this.getSession();

            Criteria criteria = session.createCriteria(GmCirculars.class);

            if (null != obj.getId() && !BigDecimal.ZERO.equals(obj.getId())) {
                criteria.add(Restrictions.eq("id", obj.getId()));
            }

            if (StringUtil.isNotNullOrEmpty(obj.getTitle())) {
                criteria.add(Restrictions.ilike("title", obj.getTitle(), MatchMode.ANYWHERE));
            }

            if(null != obj.getOrganizationId()) {
                criteria.add(Restrictions.eq("organizationId", obj.getOrganizationId()));
            }

            if (null != obj.getSerialNo() && !BigDecimal.ZERO.equals(obj.getSerialNo())) {
                criteria.add(Restrictions.eq("serialNo", obj.getSerialNo()));
            }

            if (null != obj.getYear() && !BigDecimal.ZERO.equals(obj.getYear())) {
                criteria.add(Restrictions.eq("year", obj.getYear()));
            }


            if (activeOnly) {
                criteria.add(Restrictions.eq("active", BigDecimal.ONE));
            } else {
                criteria.add(Restrictions.or(Restrictions.ne("active", CommonConstants.DELETED_STATUS), Restrictions.isNull("active"))); //Except for deleted ones -> NVL(active,2)
            }

            criteria.setFirstResult(startOffset);
            criteria.setMaxResults(maxRows);

            criteria.addOrder(Order.desc("id"));
            criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);

            System.out.println("criteria: "+ criteria.toString());
            discounts = criteria.list();
            System.out.println("returned list from db:"+discounts);
        }
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        session.close();
    }
    return discounts;
}

我尝试直接访问数据库就行了:

discounts = criteria.list();

find(GmCirculars obj, boolean activeOnly, int startOffset, int maxRows)方法中

当我运行我的代码时,我收到以下错误。

java.sql.SQLSyntaxErrorException: ORA-00942: 表或视图不存在

在 oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:447) ~[ojdbc6-11.1.0.6.0.jar:11.2.0.4.0] 在 oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:396) ~[ojdbc6-11.1.0.6.0.jar:11.2.0.4.0] 在 oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:951) ~[ojdbc6-11.1.0.6.0.jar:11.2.0.4.0] 在 oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:513) ~[ojdbc6-11.1.0.6.0.jar:11.2.0.4.0] 在 oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:227) ~[ojdbc6-11.1.0.6.0.jar:11.2.0.4.0] 在 oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:531) ~[ojdbc6-11.1.0.6.0.jar:11.2.0.4.0] 在 oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:195) ~[ojdbc6-11.1.0.6.0.jar:11.2.0.4.0] 在 oracle.jdbc.driver.T4CStatement.executeForDescribe(T4CStatement.java:876) ~[ojdbc6-11.1.0.6.0.jar:11.2.0.4.0] 在 oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1175) ~[ojdbc6-11.1.0.6.0.jar:11.2.0.4.0] 在 oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1296) ~[ojdbc6-11.1.0.6.0.jar:11.2.0.4.0] 在 oracle.jdbc.driver.OracleStatement.executeQuery(OracleStatement.java:1498) ~[ojdbc6-11.1.0.6.0.jar:11.2.0.4.0] 在 oracle.jdbc.driver.OracleStatementWrapper.executeQuery(OracleStatementWrapper.java:406) ~[ojdbc6-11.1.0.6.0.jar:11.2.0.4.0] 在 org.apache.commons.dbcp.DelegatingStatement.executeQuery(DelegatingStatement.java:208) ~[commons-dbcp-1.4.jar:1.4] 在 org.hibernate.tool.schema.extract.internal.SequenceInformationExtractorLegacyImpl.extractMetadata(SequenceInformationExtractorLegacyImpl.java:42) ~[hibernate-core-5.4.10.Final.jar:5.4.10.Final] 在 org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentImpl.sequenceInformationList(JdbcEnvironmentImpl.java:403) [hibernate-core-5.4.10.Final.jar:5.4.10.Final] 在 org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentImpl.(JdbcEnvironmentImpl.java:268) [hibernate-core-5.4.10.Final.jar:5.4.10.Final] 在 org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:114) [hibernate-core-5.4.10.Final.jar:5.4.10.Final] 在 org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:35) [hibernate-core-5.4.10.Final.jar:5.4.10.Final] 在 org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.initiateService(StandardServiceRegistryImpl.java:101) [hibernate-core-5.4.10.Final.jar:5.4.10.Final] 在 org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:263) [hibernate-core-5.4.10.Final.jar:5.4.10.Final] 在 org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:237) [hibernate-core-5.4.10.Final.jar:5.4.10.Final] 在 org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:214) [hibernate-core-5.4.10.Final.jar:5.4.10.Final] 在 org.hibernate.id.factory.internal.DefaultIdentifierGeneratorFactory.injectServices(DefaultIdentifierGeneratorFactory.java:152) [hibernate-core-5.4.10.Final.jar:5.4.10.Final] 在 org.hibernate.service.internal.AbstractServiceRegistryImpl.injectDependencies(AbstractServiceRegistryImpl.java:286) [hibernate-core-5.4.10.Final.jar:5.4.10.Final] 在 org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:243) [hibernate-core-5.4.10.Final.jar:5.4.10.Final] 在 org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:214) [hibernate-core-5.4.10.Final.jar:5.4.10.Final] 在 org.hibernate.boot.internal.InFlightMetadataCollectorImpl.(InFlightMetadataCollectorImpl.java:175) [hibernate-core-5.4.10.Final.jar:5.4.10.Final] ..................................................... ....................

2020-02-03 09:16:11.269 INFO 9952 --- [restartedMain] o.h.e.t.j.p.i.JtaPlatformInitiator:HHH000490:使用 JtaPlatform 实现:[org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] 2020-02-03 09:16:11.281 INFO 9952 --- [restartedMain] j.LocalContainerEntityManagerFactoryBean:为持久性单元“默认”初始化 JPA EntityManagerFactory 2020-02-03 09:16:11.299 INFO 9952 --- [restartedMain] o.s.b.d.a.OptionalLiveReloadServer:LiveReload 服务器正在端口 35729 上运行 2020-02-03 09:16:11.367 WARN 9952 --- [restartedMain] c.n.c.sources.URLConfigurationSource:不会轮询任何 URL 作为动态配置源。 2020-02-03 09:16:11.368 INFO 9952 --- [restartedMain] c.n.c.sources.URLConfigurationSource :要将 URL 启用为动态配置源,请定义系统属性 archaius.configurationSource.additionalUrls 或使 config.properties 在类路径上可用。 2020-02-03 09:16:11.470 WARN 9952 --- [restartedMain] JpaBaseConfiguration$JpaWebConfiguration:spring.jpa.open-in-view 默认启用。因此,可以在视图渲染期间执行数据库查询。显式配置 spring.jpa.open-in-view 以禁用此警告 2020-02-03 09:16:11.646 INFO 9952 --- [restartedMain] os.s.concurrent.ThreadPoolTask​​Executor:初始化 ExecutorService 'applicationTaskExecutor' 2020-02-03 09:16:12.754 WARN 9952 --- [restartedMain] ockingLoadBalancerClientRibbonWarnLogger:您的类路径中已经有 RibbonLoadBalancerClient。它将默认使用。由于 Spring Cloud Ribbon 处于维护模式。我们建议改用 BlockingLoadBalancerClient。要使用它,请将 spring.cloud.loadbalancer.ribbon.enabled 的值设置为 false 或从项目中删除 spring-cloud-starter-netflix-ribbon。 2020-02-03 09:16:12.794 INFO 9952 --- [restartedMain] o.s.b.a.e.web.EndpointLinksResolver:在基本路径“/执行器”下暴露 2 个端点 2020-02-03 09:16:12.846 INFO 9952 --- [restartedMain] o.s.c.n.eureka.InstanceInfoFactory:将初始实例状态设置为:正在启动 2020-02-03 09:16:12.900 INFO 9952 --- [restartedMain] com.netflix.discovery.DiscoveryClient:在区域 us-east-1 中初始化 Eureka 2020-02-03 09:16:13.231 INFO 9952 --- [restartedMain] c.n.d.provider.DiscoveryJerseyProvider:使用 JSON 编码编解码器 LegacyJacksonJson 2020-02-03 09:16:13.231 INFO 9952 --- [restartedMain] c.n.d.provider.DiscoveryJerseyProvider:使用 JSON 解码编解码器 LegacyJacksonJson 2020-02-03 09:16:13.385 INFO 9952 --- [restartedMain] c.n.d.provider.DiscoveryJerseyProvider:使用 XML 编码编解码器 XStreamXml 2020-02-03 09:16:13.385 INFO 9952 --- [restartedMain] c.n.d.provider.DiscoveryJerseyProvider:使用 XML 解码编解码器 XStreamXml 2020-02-03 09:16:13.586 INFO 9952 --- [restartedMain] c.n.d.s.r.aws.ConfigClusterResolver:通过配置解析尤里卡端点 2020-02-03 09:16:13.751 INFO 9952 --- [restartedMain] com.netflix.discovery.DiscoveryClient:禁用增量属性:false 2020-02-03 09:16:13.751 INFO 9952 --- [restartedMain] com.netflix.discovery.DiscoveryClient:单 vip 注册表刷新属性:null 2020-02-03 09:16:13.751 INFO 9952 --- [restartedMain] com.netflix.discovery.DiscoveryClient:强制完整注册表获取:false 2020-02-03 09:16:13.751 INFO 9952 --- [restartedMain] com.netflix.discovery.DiscoveryClient:应用程序为空:假 2020-02-03 09:16:13.751 INFO 9952 --- [restartedMain] com.netflix.discovery.DiscoveryClient:注册的应用程序大小为零:true 2020-02-03 09:16:13.751 INFO 9952 --- [restartedMain] com.netflix.discovery.DiscoveryClient:应用程序版本为 -1:true 2020-02-03 09:16:13.751 INFO 9952 --- [restartedMain] com.netflix.discovery.DiscoveryClient:从尤里卡服务器获取所有实例注册表信息 2020-02-03 09:16:13.932 INFO 9952 --- [restartedMain] com.netflix.discovery.DiscoveryClient:响应状态为 200 2020-02-03 09:16:13.935 INFO 9952 --- [restartedMain] com.netflix.discovery.DiscoveryClient:启动心跳执行器:更新间隔为:30 2020-02-03 09:16:13.937 INFO 9952 --- [restartedMain] c.n.discovery.InstanceInfoReplicator:InstanceInfoReplicator onDemand 更新允许的每分钟速率为 4 2020-02-03 09:16:13.940 INFO 9952 --- [restartedMain] com.netflix.discovery.DiscoveryClient:发现客户端在时间戳 1580706973939 处初始化,初始实例数:1 2020-02-03 09:16:13.943 INFO 9952 --- [restartedMain] o.s.c.n.e.s.EurekaServiceRegistry:使用状态为 UP 的 eureka 注册应用程序 CIRCULARS-MICROSERVICE 2020-02-03 09:16:13.944 INFO 9952 --- [restartedMain] com.netflix.discovery.DiscoveryClient:看到本地状态更改事件 StatusChangeEvent [timestamp=1580706973943,current=UP,previous=STARTING] 2020-02-03 09:16:13.947 信息 9952 --- [nfoReplicator-0] com.netflix.discovery.DiscoveryClient: DiscoveryClient_CIRCULARS-MICROSERVICE/HQTPM00184606D.ADM.local:circulars-microservice:8081: 注册服务... 2020-02-03 09:16:14.002 信息 9952 --- [nfoReplicator-0] com.netflix.discovery.DiscoveryClient : DiscoveryClient_CIRCULARS-MICROSERVICE/HQTPM00184606D.ADM.local:circulars-microservice:8081 - 注册状态:204 2020-02-03 09:16:14.029 INFO 9952 --- [restartedMain] o.s.b.w.embedded.tomcat.TomcatWebServer:Tomcat 在端口:8081 (http) 上启动,上下文路径为“” 2020-02-03 09:16:14.031 INFO 9952 --- [restartedMain] .s.c.n.e.s.EurekaAutoServiceRegistration:将端口更新为 8081 2020-02-03 09:16:14.266 INFO 9952 --- [restartedMain] ae.gov.adm.CircularsMicroservice:已启动 CircularsMicroservice 在 10.925 秒内(JVM 运行 11.768)完成 2020-02-03 09:16:19.478 INFO 9952 --- [nio-8081-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/]:初始化 Spring DispatcherServlet 'dispatcherServlet' 2020-02-03 09:16:19.479 INFO 9952 --- [nio-8081-exec-1] os.web.servlet.DispatcherServlet:初始化 Servlet 'dispatcherServlet' 2020-02-03 09:16:19.498 INFO 9952 --- [nio-8081-exec-1] os.web.servlet.DispatcherServlet:完成初始化 18 毫秒 称为循环微服务.....参数为:1,false,0 实体管理器实例化... 2020-02-03 09:16:19.829 WARN 9952 --- [nio-8081-exec-1] org.hibernate.orm.deprecation : HHH90000022: Hibernate 的 不推荐使用旧的 org.hibernate.Criteria API;使用 JPA 改为 javax.persistence.criteria.CriteriaQuery 标准:CriteriaImpl(ae.gov.adm.saeed.hibernate.entity.GmCirculars:this[][organizationId=1, active2 or active is null]) 2020-02-03 09:16:19.973 WARN 9952 --- [nio-8081-exec-1] o.h.engine.jdbc.spi.SqlExceptionHelper:SQL 错误:923,SQLState: 42000 2020-02-03 09:16:19.973 错误 9952 --- [nio-8081-exec-1] o.h.engine.jdbc.spi.SqlExceptionHelper:ORA-00923:FROM 关键字不是 在预期的地方找到

org.hibernate.exception.SQLGrammarException:无法提取 ResultSet 在 org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:63) 在 org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:42) 在 org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:113) 在 org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:99) 在 org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:67) 在 org.hibernate.loader.Loader.getResultSet(Loader.java:2292) 在 org.hibernate.loader.Loader.executeQueryStatement(Loader.java:2050) 在 org.hibernate.loader.Loader.executeQueryStatement(Loader.java:2012) 在 org.hibernate.loader.Loader.doQuery(Loader.java:953) 在 org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:354) 在 org.hibernate.loader.Loader.doList(Loader.java:2815) 在 org.hibernate.loader.Loader.doList(Loader.java:2797) 在 org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2629) 在 org.hibernate.loader.Loader.list(Loader.java:2624) 在 org.hibernate.loader.criteria.CriteriaLoader.list(CriteriaLoader.java:109) 在 org.hibernate.internal.SessionImpl.list(SessionImpl.java:1859) 在 org.hibernate.internal.CriteriaImpl.list(CriteriaImpl.java:370) 在 ae.gov.adm.saeed.dao.impl.GmCircularsDaoImpl.find(GmCircularsDaoImpl.java:111) 在 ae.gov.adm.saeed.dao.impl.GmCircularsDaoImpl$$FastClassBySpringCGLIB$$464553b0.invoke() 在 org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) 在 org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:769) 在 org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) 在 org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:747) 在 org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:139) 在 org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) 在 org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:747) 在 org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:366) 在 org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:99) 在 org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) 在 org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:747) 在 org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:689) 在 ae.gov.adm.saeed.dao.impl.GmCircularsDaoImpl$$EnhancerBySpringCGLIB$$aedf9fbb.find() 在 ae.gov.adm.saeed.service.CircularsService.fetchAllCircularsForOrganization(CircularsService.java:66) 在 ae.gov.adm.CircularsMicroservice.getAllCircularsForOrganization(CircularsMicroservice.java:54) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:498) 在 org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190) 在 org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138) 在 org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106) 在 org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:888) 在 org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:793) 在 org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) 在 org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040) 在 org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943) 在 org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) 在 org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:523) 在 org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:590) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) 在 org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) 在 org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) 在 org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) 在 org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) 在 org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) 在 org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:108) 在 org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) 在 org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) 在 org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) 在 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202) 在 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) 在 org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541) 在 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139) 在 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) 在 org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) 在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) 在 org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:367) 在 org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) 在 org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:860) 在 org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1598) 在 org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 在 org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 在 java.lang.Thread.run(Thread.java:748) 原因:java.sql.SQLSyntaxErrorException: ORA-00923: FROM keyword not found where expected

在 oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:447) 在 oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:396) 在 oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:951) 在 oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:513) 在 oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:227) 在 oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:531) 在 oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:208) 在 oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:886) 在 oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1175) 在 oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1296) 在 oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3613) 在 oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3657) 在 oracle.jdbc.driver.OraclePreparedStatementWrapper.executeQuery(OraclePreparedStatementWrapper.java:1495) 在 org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96) 在 org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96) 在 org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:57) ... 83 更多

【问题讨论】:

  • 你有桌子吗?在日志中,我们得到“表或视图不存在”。
  • 是的,但我不知道它指的是哪个表!

标签: java oracle hibernate spring-boot jpa


【解决方案1】:

尝试检查数据库中是否存在表“MU_GM_CIRCULARS”(可能是)以及您是否有权访问它(可能不是)。

使用您的代码使用的凭据连接数据库。试试下面的

select * from dba_tables where table_name = 'MU_GM_CIRCULARS';

如果有记录,则表示系统中存在表。

下次试试这个

select * from all_tables where table_name = 'MU_GM_CIRCULARS';

这将显示用户是否有权访问该表。如果表格出现在结果中,则检查“所有者”列并尝试使用以下格式访问表格

select * from owner.table_name

希望这会有所帮助

【讨论】:

    【解决方案2】:

    这是数据库的配置问题。我正在添加一个 config.xml 文件,这在 Spring Boot 中是不需要的。相反,我将这些值添加到我的 application.properties 文件中,然后一切正常。

    spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver
    spring.datasource.url=jdbc:oracle:thin:@xxxxxxxxxxx
    spring.datasource.username=xxxxx
    spring.datasource.password=xxxxx
    

    【讨论】:

      猜你喜欢
      • 2017-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-22
      • 2020-08-03
      • 1970-01-01
      相关资源
      最近更新 更多