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.

Reply via email to