2011-05-02 49 views
0

在Glassfish中使用openjpa 1.2.0及其內置的DataCache,啓用查詢緩存並鎖定某些指定的queires,我們看到以下異常: org.apache。 openjpa.persistence.PersistenceException:java.lang.String不能轉換爲org.apache.openjpa.datacache.QueryKeyglassfish中的openjpa查詢緩存問題+類拋出的異常表單QueryKey

任何人有什麼想法?

全部異常轉儲: [#| 2011-05-01T11:43:05.728-0500 |警告|太陽appserver9.1 | javax.enterprise.system.core.transaction | _ThreadID = 30; _ThreadName = httpSSLWorkerThread- 20393-0; _RequestID = 3ce3425f-cd4b-42b9-a305-570c5745add7; | JTS5054:完成後發生意外錯誤 org.apache.openjpa.persistence.PersistenceException:無法將java.lang.Object轉換爲org.apache.openjpa .datacache.QueryKey at com.sun.jts.jta.SynchronizationImpl.after_completion(SynchronizationImpl.java:154) at com.sun。org.apache.openjpa.kernel.BrokerImpl.afterCompletion(BrokerImpl.java:1870) 。 jts.CosTransactions.RegisteredSyncs.distributeAfter(RegisteredSyncs.java:210) at com.sun.jts.CosTrans action.TopCoordinator.afterCompletion(TopCoordinator.java:2585) at com.sun.jts.CosTransactions.CoordinatorTerm.commit(CoordinatorTerm.java:433) at com.sun.jts.CosTransactions.TerminatorImpl.commit(TerminatorImpl.java: 249) at com.sun.jts.CosTransactions.CurrentImpl.commit(CurrentImpl.java:623) at com.sun.jts.jta.TransactionManagerImpl.commit(TransactionManagerImpl.java:309) at com.sun.enterprise。 distributedtx.J2EETransactionManagerImpl.commit(J2EETransactionManagerImpl.java:1030) 在com.sun.enterprise.distributedtx.J2EETransactionManagerOpt.commit(J2EETransactionManagerOpt.java:397) 在com.sun.ejb.containers.BaseContainer.completeNewTx(BaseContainer.java: 3792) at com.sun.ejb.containers.BaseContainer.postInvokeTx(BaseCo ntainer.java:3571) 在com.sun.ejb.containers.WebServiceInvocationHandler.invoke(WebServiceInvocationHandler.java:200) 在$ Proxy973.transfer(來源不明) 在sun.reflect.NativeMethodAccessorImpl.invoke0(本機方法) 在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 在java.lang.reflect.Method.invoke(Method.java:597) 在com.sun.enterprise.webservice.InvokerImpl.invoke(InvokerImpl.java:81) 在com.sun.enterprise.webservice.EjbInvokerImpl.invoke(EjbInvokerImpl.java:82) 在com.sun.xml.ws.server .InvokerTube $ 2.invoke(InvokerTube.java:146) at com.sun.xml.ws.server.sei.EndpointMethodHandler.invoke(EndpointMethodHandler.java:257) at com.sun.xml.ws.server.sei.SEIInvokerTube.processRequest(SEIInvokerTube.java:93) at com .sun.xml.ws.api.pipe.Fiber .__ doRun(Fiber.java:595) at com.sun.xml.ws.api.pipe.Fiber。 doRun(Fiber.java:554) at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:539) at com.sun.xml.ws.api.pipe.Fiber.runSync (Fiber.java:436) at com.sun.ws.api.pipe.helper.AbstractTubeImpl.process(AbstractTubeImpl.java:106) at com.sun.enterprise.webservice.MonitoringPipe.process(MonitoringPipe.java :147) at com.sun.xml.ws.api.pipe.helper.PipeAdapter.processRequest(PipeAdapter.java:115) at com.sun.xml.ws.api.pipe.Fiber。 _doRun(Fiber.java:595) at com.sun.xml.ws.api.pipe.Fiber。 doRun(Fiber.java:554) at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:539) at com.sun.xml.ws.api.pipe.Fiber.runSync (纖維。java:436) at com.sun.xml.ws.api.pipe.helper.AbstractTubeImpl.process(AbstractTubeImpl.java:106) at com.sun.xml.ws.tx.service.TxServerPipe.process(TxServerPipe。 java:317) at com.sun.enterprise.webservice.CommonServerSecurityPipe.processRequest(CommonServerSecurityPipe.java:218) at com.sun.enterprise.webservice.CommonServerSecurityPipe.process(CommonServerSecurityPipe.java:129) at com.sun。 xml.ws.api.pipe.helper.PipeAdapter.processRequest(PipeAdapter.java:115) at com.sun.xml.ws.api.pipe.Fiber。_doRun(Fiber.java:595) at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:554) at com.sun.xml.ws.api.pipe.Fiber.doRun (Fiber.java:539) at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:436) at com.sun.xml.ws.server.WSEndpointImpl $ 2.process(WSEndpointImpl。 java:243) at com.sun.xml.ws.transport.http.HttpAdapter $ HttpToolkit.handle(HttpAdapter.java:444) at com.sun.xml.ws.transport.http.HttpAdapter.handle(HttpAdapter。 (Ejb3MessageDispatcher.java:113)(java: at com.sun.enterprise.webservice.Ejb3MessageDispatc her.invoke(Ejb3MessageDispatcher.java:87) at com.sun.enterprise.webservice.EjbWebServiceServlet.dispatchToEjbEndpoint(EjbWebServiceServlet.java:226) at com.sun.enterprise.webservice.EjbWebServiceServlet.service(EjbWebServiceServlet.java:155) at com.sun.enterprise.web.AdHocContextValve.invoke(AdHocContextValve.java:114) at org.apache.catalina.core.StandardPipeline。(HttpServlet.java: (org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:571) com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:87) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:206) at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632) at org.apache.catalina.core.StandardPipeline。 doInvoke(StandardPipeline.java:577) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:571) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1080) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:150) at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632) at org.apache.catalina.core.StandardPipeline。 doInvoke(StandardPipeline.java:577) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:571) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1080) at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:272) at com.sun.enterprise.web。 connector.grizzly.DefaultProcessorTask.invokeAdapter(DefaultProcessorTask.java:637) at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.doProcess(DefaultProcessorTask.java:568) at com.sun.enterprise.web.connector。 grizzly.DefaultProcessorTask.process(DefaultProcessorTask.java:813) at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.executeProcessorTask(DefaultReadTask.java:341) at com.sun.enterprise.web.connector.grizzly。 DefaultReadTask.doTask(DefaultReadTask.java:263) at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask( DefaultReadTask.java:214) at com.sun.enterprise.web.connector.grizzly.TaskBase.run(TaskBase.java:265) at com.sun.enterprise.web.connector.grizzly.ssl.SSLWorkerThread.run( SSLWorkerThread。java:106) 引起:java.lang.ClassCastException:java.lang.Object無法轉換爲org.apache.openjpa.datacache.QueryKey at org.apache.openjpa.datacache.AbstractQueryCache.onTypesChanged(AbstractQueryCache.java: (DataCacheStoreManager.java:90) (org.apache.openjpa)。在org.apache.openjpa.kernel.BrokerImpl.endTransaction(BrokerImpl.java: 2177) at org.apache.openjpa.kernel.BrokerImpl.afterCompletion(BrokerIm pl.java:1846) ...... 75多個 |#]

回答

0

做一些調試後,我意識到,生成的查詢鍵爲null,因爲在一個名爲查詢中使用實體不是數據緩存啓用。