有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在weblogic服务器上部署Spring boot web app后,错误为ORA01427:singlerow子查询返回多行

我是SpringBoot的新手,weblogic已经用SpringBoot+oracle+weblogic+jndi创建了SpringBootWebApp 现在,当我尝试在weblogic server上部署时,它显示了weblogic server部署处理的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中调用的 请在这方面提供您的支持


共 (1) 个答案

  1. # 1 楼答案

    如果看不到SQL查询,很难判断,但看起来您有一个查询,它给出了不止一行,并在等式中使用

    例如:

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

    如果内部select只返回一行,则将起作用。 当它返回几行时,您将得到:

    ORA-01427: single-row subquery returns more than one row

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

    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)