CriteriaBuilder cb = em.getCriteriaBuilder(); CriteriaQuery<Tuple> cq = cb.createTupleQuery(); Root<Attachment> root = cq.from(Attachment.class); javax.persistence.criteria.Path<String> personPath = root.get(Attachment_.person); Predicate p = cb.isMember(share, root.get(Attachment_.shareList)); cq.multiselect(personPath, cb.count(root)).where(p).groupBy(personPath); List<WrapOutShare> list = new ArrayList<>(); for (Tuple o : em.createQuery(cq).getResultList()) { WrapOutShare wrap = new WrapOutShare(o.get(personPath), 0L); list.add(wrap); }
with cb.count(root), it will throw exception; without cb.count(root), it is work fine! is this is a bug? 7538 null.s001 TRACE [http-apr-8080-exec-147] openjpa.jdbc.SQL - <t 1841362512, conn 1213857262> executing prepstmnt 1134522538 SELECT t0.PERSON, COUNT(t0.ID) FROM x.FILE_ATTACHMENT t0 INNER JOIN x.FILE_ATTACHMENT_shareList t1 ON t0.ID = t1.ATTACHMENT_ID WHERE (t1.ELEMENT = ?) GROUP BY t0.PERSON [params=?] 7539 null.s001 TRACE [http-apr-8080-exec-147] openjpa.jdbc.SQL - <t 1841362512, conn 1213857262> [1 ms] spent 7549 null.s001 TRACE [http-apr-8080-exec-147] openjpa.jdbc.JDBC - <t 1841362512, conn 0> [0 ms] close <openjpa-2.3.0-r422266:1540826 fatal general error> org.apache.openjpa.persistence.PersistenceException: [jcc][t4][10120][10898][4.13.127] 操作无效:已关闭 result set。 ERRORCODE=-4470, SQLSTATE=null at org.apache.openjpa.jdbc.sql.DBDictionary.narrow(DBDictionary.java:4974) at org.apache.openjpa.jdbc.sql.DBDictionary.newStoreException(DBDictionary.java:4934) at org.apache.openjpa.jdbc.sql.DB2Dictionary.newStoreException(DB2Dictionary.java:574) at org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:134) at org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:116) at org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:68) at org.apache.openjpa.jdbc.kernel.SelectResultObjectProvider.handleCheckedException(SelectResultObjectProvider.java:155) at org.apache.openjpa.slice.jdbc.UniqueResultObjectProvider.handleCheckedException(UniqueResultObjectProvider.java:76) at org.apache.openjpa.kernel.QueryImpl$PackingResultObjectProvider.handleCheckedException(QueryImpl.java:2111) at org.apache.openjpa.lib.rop.EagerResultList.<init>(EagerResultList.java:40) at org.apache.openjpa.kernel.QueryImpl.toResult(QueryImpl.java:1251) at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:1007) at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:863) at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:794) at org.apache.openjpa.slice.DistributedQueryImpl.execute(DistributedQueryImpl.java:61) at org.apache.openjpa.kernel.DelegatingQuery.execute(DelegatingQuery.java:542) at org.apache.openjpa.persistence.QueryImpl.execute(QueryImpl.java:275) at org.apache.openjpa.persistence.QueryImpl.getResultList(QueryImpl.java:291) at com.x.file.assemble.control.jaxrs.share.ShareAction.listSharePerson(ShareAction.java:96) at com.x.file.assemble.control.jaxrs.share.ShareAction.listShare(ShareAction.java:47) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:483) at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory$1.invoke(ResourceMethodInvocationHandlerFactory.java:81) at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:164) at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:181) at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:158) at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:101) at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:389) at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:347) at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:102) at org.glassfish.jersey.server.ServerRuntime$2.run(ServerRuntime.java:305) at org.glassfish.jersey.internal.Errors$1.call(Errors.java:271) at org.glassfish.jersey.internal.Errors$1.call(Errors.java:267) at org.glassfish.jersey.internal.Errors.process(Errors.java:315) at org.glassfish.jersey.internal.Errors.process(Errors.java:297) at org.glassfish.jersey.internal.Errors.process(Errors.java:267) at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:317) at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:288) at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:1110) at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:401) at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:386) at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:335) at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:222) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at com.x.common.core.application.jaxrs.AbstractJaxrsFilter.doFilter(AbstractJaxrsFilter.java:32) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:617) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:668) at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2463) at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2452) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:745) Caused by: com.ibm.db2.jcc.am.SqlException: [jcc][t4][10120][10898][4.13.127] 操作无效:已关闭 result set。 ERRORCODE=-4470, SQLSTATE=null at com.ibm.db2.jcc.am.id.a(id.java:661) at com.ibm.db2.jcc.am.id.a(id.java:60) at com.ibm.db2.jcc.am.id.a(id.java:103) at com.ibm.db2.jcc.am.bo.Db(bo.java:4599) at com.ibm.db2.jcc.am.bo.r(bo.java:4556) at com.ibm.db2.jcc.am.bo.e(bo.java:1140) at com.ibm.db2.jcc.am.bo.getString(bo.java:1128) at org.apache.commons.dbcp.DelegatingResultSet.getString(DelegatingResultSet.java:213) at org.apache.commons.dbcp.DelegatingResultSet.getString(DelegatingResultSet.java:213) at org.apache.openjpa.lib.jdbc.DelegatingResultSet.getString(DelegatingResultSet.java:121) at org.apache.openjpa.jdbc.sql.DBDictionary.getString(DBDictionary.java:902) at org.apache.openjpa.jdbc.sql.ResultSetResult.getStringInternal(ResultSetResult.java:474) at org.apache.openjpa.jdbc.sql.AbstractResult.getString(AbstractResult.java:767) at org.apache.openjpa.jdbc.meta.strats.StringFieldStrategy.loadProjection(StringFieldStrategy.java:182) at org.apache.openjpa.jdbc.meta.FieldMapping.loadProjection(FieldMapping.java:1011) at org.apache.openjpa.jdbc.kernel.exps.PCPath.load(PCPath.java:926) at org.apache.openjpa.jdbc.kernel.exps.PCPath.load(PCPath.java:900) at org.apache.openjpa.jdbc.kernel.ProjectionResultObjectProvider.getResultObject(ProjectionResultObjectProvider.java:78) at org.apache.openjpa.slice.jdbc.UniqueResultObjectProvider.next(UniqueResultObjectProvider.java:97) at org.apache.openjpa.kernel.QueryImpl$PackingResultObjectProvider.next(QueryImpl.java:2087) at org.apache.openjpa.lib.rop.EagerResultList.<init>(EagerResultList.java:35) ... 59 more -- View this message in context: http://openjpa.208410.n2.nabble.com/criteria-count-error-tp7588080.html Sent from the OpenJPA Users mailing list archive at Nabble.com.