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.