QueryDSL : Scalar subquery contains more than one row

程序中报错,但数据库查询没有问题

 dbHelper.select(Projections.constructor(VirtualBoxDashBoardVO.class,
                (JPAExpressions.select(vb.trackingUpdatedAt).from(vb)).limit(1),
                (JPAExpressions.select(vb.count()).from(vb).where(vb.status.eq(VirtualBoxStatus.NEW).and(vb.virtualBoxType.eq(SHIPPING_LABEL_NEEDED)))),
                (JPAExpressions.select(vb.count()).from(vb).where(vb.status.eq(VirtualBoxStatus.ON_WAY).and(vb.virtualBoxType.eq(SHIPPING_LABEL_NEEDED)))),
                (JPAExpressions.select(vb.count()).from(vb).where(dateExpr.eq(firstDay))),
                (JPAExpressions.select(vb.count()).from(vb).where(dateExpr.eq(secondDay))),
                (JPAExpressions.select(vb.count()).from(vb).where(dateExpr.eq(thirdDay))),
                (JPAExpressions.select(vb.count()).from(vb).where(dateExpr.eq(forthDay))),
                (JPAExpressions.select(vb.count()).from(vb).where(dateExpr.eq(fifthDay))),
                (JPAExpressions.select(vb.count()).from(vb).where(dateExpr.eq(sixthDay))),
                (JPAExpressions.select(vb.count()).from(vb).where(dateExpr.eq(seventhDay))),
                (JPAExpressions.select(vb.count()).from(vb).where(vb.status.in(VirtualBoxStatus.NEW,VirtualBoxStatus.ON_WAY).and(vb.virtualBoxType.eq(SHIPPING_LABEL_NEEDED)))),
                (JPAExpressions.select(qWarehouse.companyName).from(qWarehouse)))).from(vb, qWarehouse)
                .where(vb.warehouse.id.eq(qWarehouse.id)).fetch();

org.h2.jdbc.JdbcSQLDataException: Scalar subquery contains more than one row; SQL statement:
select (select virtualbox2_.trackingUpdatedAt from VirtualBox virtualbox2_) as col_0_0_, (select count(virtualbox3_.id) from VirtualBox virtualbox3_ where virtualbox3_.status=? and virtualbox3_.virtualBoxType=?) as col_1_0_, (select count(virtualbox4_.id) from VirtualBox virtualbox4_ where virtualbox4_.status=? and virtualbox4_.virtualBoxType=?) as col_2_0_, (select count(virtualbox5_.id) from VirtualBox virtualbox5_ where FORMATDATETIME(virtualbox5_.eta,'yyyy-MM-dd')=FORMATDATETIME(current_date,'yyyy-MM-dd')) as col_3_0_, (select count(virtualbox6_.id) from VirtualBox virtualbox6_ where FORMATDATETIME(virtualbox6_.eta,'yyyy-MM-dd')=FORMATDATETIME(current_date+1,'yyyy-MM-dd')) as col_4_0_, (select count(virtualbox7_.id) from VirtualBox virtualbox7_ where FORMATDATETIME(virtualbox7_.eta,'yyyy-MM-dd')=FORMATDATETIME(current_date+2,'yyyy-MM-dd')) as col_5_0_, (select count(virtualbox8_.id) from VirtualBox virtualbox8_ where FORMATDATETIME(virtualbox8_.eta,'yyyy-MM-dd')=FORMATDATETIME(current_date+3,'yyyy-MM-dd')) as col_6_0_, (select count(virtualbox9_.id) from VirtualBox virtualbox9_ where FORMATDATETIME(virtualbox9_.eta,'yyyy-MM-dd')=FORMATDATETIME(current_date+4,'yyyy-MM-dd')) as col_7_0_, (select count(virtualbox10_.id) from VirtualBox virtualbox10_ where FORMATDATETIME(virtualbox10_.eta,'yyyy-MM-dd')=FORMATDATETIME(current_date+5,'yyyy-MM-dd')) as col_8_0_, (select count(virtualbox11_.id) from VirtualBox virtualbox11_ where FORMATDATETIME(virtualbox11_.eta,'yyyy-MM-dd')=FORMATDATETIME(current_date+6,'yyyy-MM-dd')) as col_9_0_, (select count(virtualbox12_.id) from VirtualBox virtualbox12_ where (virtualbox12_.status in (? , ?)) and virtualbox12_.virtualBoxType=?) as col_10_0_, (select warehouse13_.companyName from Warehouse warehouse13_) as col_11_0_ from VirtualBox virtualbox0_ cross join Warehouse warehouse1_ where virtualbox0_.warehouse_id=warehouse1_.id [90053-200]
	at org.h2.message.DbException.getJdbcSQLException(DbException.java:590)
	at org.h2.message.DbException.getJdbcSQLException(DbException.java:429)
	at org.h2.message.DbException.get(DbException.java:205)
	at org.h2.message.DbException.get(DbException.java:181)
	at org.h2.message.DbException.get(DbException.java:170)
	at org.h2.expression.Subquery.getValue(Subquery.java:45)
	at org.h2.expression.Alias.getValue(Alias.java:37)
	at org.h2.command.dml.Select$LazyResultQueryFlat.fetchNextRow(Select.java:1851)
	at org.h2.result.LazyResult.hasNext(LazyResult.java:101)
	at org.h2.result.LazyResult.next(LazyResult.java:60)
	at org.h2.command.dml.Select.queryFlat(Select.java:737)
	at org.h2.command.dml.Select.queryWithoutCache(Select.java:844)
	at org.h2.command.dml.Query.queryWithoutCacheLazyCheck(Query.java:201)
	at org.h2.command.dml.Query.query(Query.java:489)
	at org.h2.command.dml.Query.query(Query.java:451)
	at org.h2.command.CommandContainer.query(CommandContainer.java:285)
	at org.h2.command.Command.executeQuery(Command.java:195)
	at org.h2.jdbc.JdbcPreparedStatement.executeQuery(JdbcPreparedStatement.java:114)
	at com.zaxxer.hikari.pool.ProxyPreparedStatement.executeQuery(ProxyPreparedStatement.java:52)
	at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeQuery(HikariProxyPreparedStatement.java)
	at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:57)
	at org.hibernate.loader.Loader.getResultSet(Loader.java:2322)
	at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:2075)
	at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:2037)
	at org.hibernate.loader.Loader.doQuery(Loader.java:956)
	at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:357)
	at org.hibernate.loader.Loader.doList(Loader.java:2868)
	at org.hibernate.loader.Loader.doList(Loader.java:2850)
	at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2682)
	at org.hibernate.loader.Loader.list(Loader.java:2677)
	at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:540)
	at org.hibernate.hql.internal.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:400)
	at org.hibernate.engine.query.spi.HQLQueryPlan.performList(HQLQueryPlan.java:219)
	at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1454)
	at org.hibernate.query.internal.AbstractProducedQuery.doList(AbstractProducedQuery.java:1649)
	at org.hibernate.query.internal.AbstractProducedQuery.list(AbstractProducedQuery.java:1617)
	at org.hibernate.query.Query.getResultList(Query.java:165)
	at com.querydsl.jpa.impl.AbstractJPAQuery.getResultList(AbstractJPAQuery.java:191)
	at com.querydsl.jpa.impl.AbstractJPAQuery.fetch(AbstractJPAQuery.java:243)
	at com.cwf.wms.virtual.service.VirtualBoxService.loadAllVirtualBoxTracking(VirtualBoxService.java:431)
	at com.cwf.wms.virtual.service.VirtualBoxService$$FastClassBySpringCGLIB$$3b209b9f.invoke(<generated>)
	at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:783)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:753)
	at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:123)
	at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:388)
	at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:753)
	at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:753)
	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:698)
	at com.cwf.wms.virtual.service.VirtualBoxService$$EnhancerBySpringCGLIB$$28a237ee.loadAllVirtualBoxTracking(<generated>)
	at com.cwf.wms.virtual.rs.VirtualBoxController.loadAllVirtualBoxTracking(VirtualBoxController.java:199)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)
	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150)
	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895)
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)
	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1067)
	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:963)
	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
	at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:655)
	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:764)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:320)
	at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:126)
	at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:90)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
	at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:118)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
	at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:137)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
	at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:111)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
	at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:158)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
	at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
	at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:155)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
	at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:116)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
	at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:92)
	at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:77)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
	at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:105)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
	at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:56)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
	at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:215)
	at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:178)
	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:354)
	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:267)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
	at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:540)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:359)
	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399)
	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:889)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1735)
	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
	at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
	at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	at java.base/java.lang.Thread.run(Thread.java:834)

limit 要写在 where 后面才生效
参考 querydsl.com