【问题标题】:After deploying Spring boot web app on weblogic server, getting the error as ORA-01427: single-row subquery returns more than one row在 weblogic 服务器上部署 Spring boot web 应用程序后,得到错误为 ORA-01427: single-row subquery returns more than one row
【发布时间】:2019-02-09 06:45:29
【问题描述】:

我是 spring boot 的新手,weblogic 使用 spring boot + oracle + weblogic + jndi 创建了 spring boot webapp 现在,当我尝试在 weblogic 服务器上进行部署时,它显示处理 weblogic 服务器的部署 5-10 分钟,然后给出此错误, ORA-01427: 单行子查询返回多于一行

完整的堆栈跟踪如下,

<org.hibernate.jpa.internal.util.LogHelper> <LogHelper> <logPersistenceUnitInformation> <HHH000204: Processing PersistenceUnitInfo [
        name: default
        ...]> 
    2018-09-04 14:07:28.489  INFO 23980 --- [ (self-tuning)'] o.hibernate.jpa.internal.util.LogHelper  : HHH000204: Processing PersistenceUnitInfo [
        name: default
        ...]
    <org.hibernate.Version> <Version> <logVersion> <HHH000412: Hibernate Core {5.2.16.Final}> 
    2018-09-04 14:07:28.656  INFO 23980 --- [ (self-tuning)'] org.hibernate.Version                    : HHH000412: Hibernate Core {5.2.16.Final}
    <org.hibernate.cfg.Environment> <Environment> <<clinit>> <HHH000206: hibernate.properties not found> 
    2018-09-04 14:07:28.660  INFO 23980 --- [ (self-tuning)'] org.hibernate.cfg.Environment            : HHH000206: hibernate.properties not found
    <org.hibernate.annotations.common.reflection.java.JavaReflectionManager> <JavaReflectionManager> <<clinit>> <HCANN000001: Hibernate Commons Annotations {5.0.1.Final}> 
    2018-09-04 14:07:28.731  INFO 23980 --- [ (self-tuning)'] o.hibernate.annotations.common.Version   : HCANN000001: Hibernate Commons Annotations {5.0.1.Final}
    <org.hibernate.dialect.Dialect> <Dialect> <<init>> <HHH000400: Using dialect: org.hibernate.dialect.Oracle10gDialect> 
    2018-09-04 14:07:28.924  INFO 23980 --- [ (self-tuning)'] org.hibernate.dialect.Dialect            : HHH000400: Using dialect: org.hibernate.dialect.Oracle10gDialect
        018-09-03 10:56:17.148  WARN 11372 --- [ (self-tuning)'] o.h.engine.jdbc.spi.SqlExceptionHelper   : SQL Error: 1427, SQLState: 21000
        2018-09-03 10:56:17.148  WARN 11372 --- [ (self-tuning)'] o.h.engine.jdbc.spi.SqlExceptionHelper   : SQL Error: 1427, SQLState: 21000
        2018-09-03 10:56:17.148 ERROR 11372 --- [ (self-tuning)'] o.h.engine.jdbc.spi.SqlExceptionHelper   : ORA-01427: single-row subquery returns more than one row

        2018-09-03 10:56:17.148 ERROR 11372 --- [ (self-tuning)'] o.h.engine.jdbc.spi.SqlExceptionHelper   : ORA-01427: single-row subquery returns more than one row

        2018-09-03 10:56:17.151  WARN 11372 --- [ (self-tuning)'] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Invocation of init method failed; nested exception is javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory; nested exception is org.hibernate.exception.DataException: Error accessing tables metadata
        2018-09-03 10:56:17.151  WARN 11372 --- [ (self-tuning)'] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Invocation of init method failed; nested exception is javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory; nested exception is org.hibernate.exception.DataException: Error accessing tables metadata
        2018-09-03 10:56:17.151  INFO 11372 --- [ (self-tuning)'] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Shutdown initiated...
        2018-09-03 10:56:19.141  INFO 11372 --- [ (self-tuning)'] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Shutdown completed.
        2018-09-03 10:56:19.152  INFO 11372 --- [ (self-tuning)'] ConditionEvaluationReportLoggingListener : 

        Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
        2018-09-03 10:56:19.158 ERROR 11372 --- [ (self-tuning)'] o.s.boot.SpringApplication               : Application run failed

        org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Invocation of init method failed; nested exception is javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory; nested exception is org.hibernate.exception.DataException: Error accessing tables metadata
            at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1706)
            at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:579)
            at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:501)
            at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:317)
            at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:228)
            at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:315)
            at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
            at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1089)
            at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:859)
            at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:550)
            at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:140)
            at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:759)
            at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:395)
            at org.springframework.boot.SpringApplication.run(SpringApplication.java:327)
            at org.springframework.boot.web.servlet.support.SpringBootServletInitializer.run(SpringBootServletInitializer.java:155)
            at org.springframework.boot.web.servlet.support.SpringBootServletInitializer.createRootApplicationContext(SpringBootServletInitializer.java:135)
            at org.springframework.boot.web.servlet.support.SpringBootServletInitializer.onStartup(SpringBootServletInitializer.java:87)
            at org.springframework.web.SpringServletContainerInitializer.onStartup(SpringServletContainerInitializer.java:172)
            at weblogic.servlet.internal.WebAppServletContext.initContainerInitializer(WebAppServletContext.java:1425)
            at weblogic.servlet.internal.WebAppServletContext.initContainerInitializers(WebAppServletContext.java:1364)
            at weblogic.servlet.internal.WebAppServletContext.initContainerInitializers(WebAppServletContext.java:1345)
            at weblogic.servlet.internal.WebAppServletContext.preloadResources(WebAppServletContext.java:1917)
            at weblogic.servlet.internal.WebAppServletContext.start(WebAppServletContext.java:3101)
            at weblogic.servlet.internal.WebAppModule.startContexts(WebAppModule.java:1843)
            at weblogic.servlet.internal.WebAppModule.start(WebAppModule.java:884)
            at weblogic.application.internal.ExtensibleModuleWrapper$StartStateChange.next(ExtensibleModuleWrapper.java:360)
            at weblogic.application.internal.ExtensibleModuleWrapper$StartStateChange.next(ExtensibleModuleWrapper.java:356)
            at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:45)
            at weblogic.application.internal.ExtensibleModuleWrapper.start(ExtensibleModuleWrapper.java:138)
            at weblogic.application.internal.flow.ModuleListenerInvoker.start(ModuleListenerInvoker.java:124)
            at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:233)
            at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:228)
            at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:45)
            at weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:78)
            at weblogic.application.internal.flow.StartModulesFlow.activate(StartModulesFlow.java:52)
            at weblogic.application.internal.BaseDeployment$2.next(BaseDeployment.java:752)
            at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:45)
            at weblogic.application.internal.BaseDeployment.activate(BaseDeployment.java:262)
            at weblogic.application.internal.SingleModuleDeployment.activate(SingleModuleDeployment.java:52)
            at weblogic.application.internal.DeploymentStateChecker.activate(DeploymentStateChecker.java:165)
            at weblogic.deploy.internal.targetserver.AppContainerInvoker.activate(AppContainerInvoker.java:90)
            at weblogic.deploy.internal.targetserver.BasicDeployment.activate(BasicDeployment.java:274)
            at weblogic.deploy.internal.targetserver.BasicDeployment.activateFromServerLifecycle(BasicDeployment.java:507)
            at weblogic.management.deploy.internal.DeploymentAdapter$1.doActivate(DeploymentAdapter.java:53)
            at weblogic.management.deploy.internal.DeploymentAdapter.activate(DeploymentAdapter.java:202)
            at weblogic.management.deploy.internal.AppTransition$2.transitionApp(AppTransition.java:52)
            at weblogic.management.deploy.internal.ConfiguredDeployments$2.doItem(ConfiguredDeployments.java:741)
            at weblogic.management.deploy.internal.parallel.BucketInvoker$2.run(BucketInvoker.java:95)
            at weblogic.work.ContextWrap.run(ContextWrap.java:46)
            at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:670)
            at weblogic.invocation.ComponentInvocationContextManager._runAs(ComponentInvocationContextManager.java:352)
            at weblogic.invocation.ComponentInvocationContextManager.runAs(ComponentInvocationContextManager.java:337)
            at weblogic.work.LivePartitionUtility.doRunWorkUnderContext(LivePartitionUtility.java:57)
            at weblogic.work.PartitionUtility.runWorkUnderContext(PartitionUtility.java:41)
            at weblogic.work.SelfTuningWorkManagerImpl.runWorkUnderContext(SelfTuningWorkManagerImpl.java:644)
            at weblogic.work.ExecuteThread.execute(ExecuteThread.java:415)
            at weblogic.work.ExecuteThread.run(ExecuteThread.java:355)
        Caused by: javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory; nested exception is org.hibernate.exception.DataException: Error accessing tables metadata
            at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:402)
            at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:377)
            at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:341)
            at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1765)
            at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1702)
            ... 56 common frames omitted
        Caused by: org.hibernate.exception.DataException: Error accessing tables metadata
            at org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:118)
            at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:42)
            at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:111)
            at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:97)
            at org.hibernate.tool.schema.extract.internal.InformationExtractorJdbcDatabaseMetaDataImpl.convertSQLException(InformationExtractorJdbcDatabaseMetaDataImpl.java:98)
            at org.hibernate.tool.schema.extract.internal.InformationExtractorJdbcDatabaseMetaDataImpl.populateTablesWithColumns(InformationExtractorJdbcDatabaseMetaDataImpl.java:383)
            at org.hibernate.tool.schema.extract.internal.InformationExtractorJdbcDatabaseMetaDataImpl.getTables(InformationExtractorJdbcDatabaseMetaDataImpl.java:337)
            at org.hibernate.tool.schema.extract.internal.DatabaseInformationImpl.getTablesInformation(DatabaseInformationImpl.java:120)
            at org.hibernate.tool.schema.internal.GroupedSchemaMigratorImpl.performTablesMigration(GroupedSchemaMigratorImpl.java:65)
            at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.performMigration(AbstractSchemaMigrator.java:207)
            at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.doMigration(AbstractSchemaMigrator.java:114)
            at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.performDatabaseAction(SchemaManagementToolCoordinator.java:183)
            at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.process(SchemaManagementToolCoordinator.java:72)
            at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:312)
            at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:462)
            at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:892)
            at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:57)
            at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:365)
            at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:390)
            ... 60 common frames omitted
        Caused by: java.sql.SQLException: ORA-01427: single-row subquery returns more than one row

            at oracle.jdbc.driver.T4CTTIoer11.processError(T4CTTIoer11.java:495)
            at oracle.jdbc.driver.T4CTTIoer11.processError(T4CTTIoer11.java:447)
            at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:1055)
            at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:624)
            at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:253)
            at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:613)
            at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:214)
            at oracle.jdbc.driver.T4CStatement.fetch(T4CStatement.java:1004)
            at oracle.jdbc.driver.OracleStatement.fetchMoreRows(OracleStatement.java:3458)
            at oracle.jdbc.driver.InsensitiveScrollableResultSet.fetchMoreRows(InsensitiveScrollableResultSet.java:737)
            at oracle.jdbc.driver.InsensitiveScrollableResultSet.absoluteInternal(InsensitiveScrollableResultSet.java:693)
            at oracle.jdbc.driver.InsensitiveScrollableResultSet.next(InsensitiveScrollableResultSet.java:407)
            at org.hibernate.tool.schema.extract.internal.InformationExtractorJdbcDatabaseMetaDataImpl.populateTablesWithColumns(InformationExtractorJdbcDatabaseMetaDataImpl.java:359)
            ... 73 common frames omitted
        Caused by: oracle.jdbc.OracleDatabaseException: ORA-01427: single-row subquery returns more than one row

            at oracle.jdbc.driver.T4CTTIoer11.processError(T4CTTIoer11.java:499)
            ... 85 common frames omitted

这里非常感谢任何快速帮助。 spring boot jpa hibernate 似乎存在问题。错误中显示的 sql 查询,我不是从代码中调用的,它可能默认从 api 调用 请为此提供您的支持。

【问题讨论】:

    标签: java oracle spring-boot spring-data-jpa weblogic12c


    【解决方案1】:

    如果不查看 SQL 查询很难判断,但看起来您有一个查询提供多于一行并用于方程式。

    例如:

    Selecct id1 from table1 where num1=(Select num2 from table2 where id2=2)
    

    如果内部选择恰好返回一行,则将起作用。 当它返回几行时,您将获得:

    ORA-01427: 单行子查询返回多于一行

    您可以通过多种方式修复它:

    Select id1 from table1 where num1 IN (Select num2 from table2 where id2=2)
    

    或者

    Select id1 from table1 where num1=(Select MAX(num2) from table2 where id2=2)
    

    【讨论】:

    • 感谢您前往@SHR 并在此处提供您的快速分析但是,问题是我根本没有在堆栈跟踪中提到的表上调用此 sql 查询。我只是使用 spring jpa 通过使用 JpaRepository 从名为文章的表中获取数据。我也想知道这个查询是怎么被调用的
    猜你喜欢
    • 1970-01-01
    • 2019-09-09
    • 2020-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-13
    • 1970-01-01
    相关资源
    最近更新 更多