2009-09-16 3 views
1

J'ai un problème avec le code d'hibernation. J'appelle la méthode saveOrUpdate() et chaque fois que j'essaie de faire une mise à jour, j'obtiens une exception NullPointerException. La première fois ça marche, la deuxième fois non, la troisième fois. Cela se passe sur les mises à jour. Je ne rafraîchis pas la page, republiant le serveur, rien. Voici mon code. L'exception est levée sur la session. GetTransaction(). Commit(); ligne.Hibernate saveOrUpdate() nullPointerException lancé à chaque seconde mise à jour

Session session = getSession(); 
session.beginTransaction(); 
session.saveOrUpdate(com); 
session.getTransaction().commit(); 

J'ai essayé de faire session.flush() et session.close() après la validation, mais cela n'aide pas.

Toute aide serait vraiment appréciée.

Et voici la trace de la pile ....

[16/09/09 12:14:06:817 BST] 00000027 ServletWrappe E SRVE0068E: Uncaught exception thrown in one of the service methods of the servlet: JetspeedContainer. Exception thrown : java.lang.NullPointerException 
at oracle.jdbc.dbaccess.DBData.clearItem(DBData.java:431) 
at oracle.jdbc.dbaccess.DBDataSetImpl.clearItem(DBDataSetImpl.java:3528) 
at oracle.jdbc.driver.OraclePreparedStatement.clearParameters(OraclePreparedStatement.java:3401) 
at com.ibm.ws.rsadapter.jdbc.WSJdbcConnection.resetStatement(WSJdbcConnection.java:2369) 
at com.ibm.ws.rsadapter.jdbc.WSJdbcConnection.prepareStatement(WSJdbcConnection.java:2020) 
at com.ibm.ws.rsadapter.jdbc.WSJdbcConnection.prepareStatement(WSJdbcConnection.java:1972) 
at org.hibernate.jdbc.AbstractBatcher.getPreparedStatement(AbstractBatcher.java:497) 
at org.hibernate.jdbc.AbstractBatcher.prepareStatement(AbstractBatcher.java:94) 
at org.hibernate.jdbc.AbstractBatcher.prepareStatement(AbstractBatcher.java:87) 
at org.hibernate.jdbc.AbstractBatcher.prepareBatchStatement(AbstractBatcher.java:218) 
at org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:2289) 
at org.hibernate.persister.entity.AbstractEntityPersister.updateOrInsert(AbstractEntityPersister.java:2242) 
at org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:2542) 
at org.hibernate.action.EntityUpdateAction.execute(EntityUpdateAction.java:92) 
at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:248) 
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:232) 
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:140) 
at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:297) 
at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27) 
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000) 
at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338) 
at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106) 
at com.fmr.fc.portlet.communications.dao.impl.HibernateCommunicationsDAOImpl.createCommunication(HibernateCommunicationsDAOImpl.java:128) 
at com.fmr.fc.portlet.communications.CommunicationsAdminPortlet.processAction(CommunicationsAdminPortlet.java:168) 
at org.apache.jetspeed.factory.JetspeedPortletInstance.processAction(JetspeedPortletInstance.java:97) 
at org.apache.jetspeed.container.JetspeedContainerServlet.doGet(JetspeedContainerServlet.java:258) 
at org.apache.jetspeed.container.JetspeedContainerServlet.doPost(JetspeedContainerServlet.java:396) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:763) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856) 
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:989) 
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:501) 
at com.ibm.ws.wswebcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:464) 
at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.include(WebAppRequestDispatcher.java:639) 
at org.apache.jetspeed.container.invoker.ServletPortletInvoker.invoke(ServletPortletInvoker.java:273) 
at org.apache.jetspeed.container.invoker.ServletPortletInvoker.action(ServletPortletInvoker.java:148) 
at org.apache.pluto.PortletContainerImpl.processPortletAction(PortletContainerImpl.java:164) 
at org.apache.jetspeed.container.JetspeedPortletContainerWrapper.processPortletAction(JetspeedPortletContainerWrapper.java:133) 
at org.apache.jetspeed.pipeline.valve.impl.ActionValveImpl.invoke(ActionValveImpl.java:148) 
at org.apache.jetspeed.pipeline.JetspeedPipeline$Invocation.invokeNext(JetspeedPipeline.java:167) 
at org.apache.jetspeed.container.ContainerValve.invoke(ContainerValve.java:109) 
at org.apache.jetspeed.pipeline.JetspeedPipeline$Invocation.invokeNext(JetspeedPipeline.java:167) 
at com.fmr.fcpf.util.PageHistoryValve.invoke(PageHistoryValve.java:161) 
at org.apache.jetspeed.pipeline.JetspeedPipeline$Invocation.invokeNext(JetspeedPipeline.java:167) 
at org.apache.jetspeed.profiler.impl.ProfilerValveImpl.invoke(ProfilerValveImpl.java:248) 
at org.apache.jetspeed.pipeline.JetspeedPipeline$Invocation.invokeNext(JetspeedPipeline.java:167) 
at org.apache.jetspeed.security.impl.LoginValidationValveImpl.invoke(LoginValidationValveImpl.java:159) 
at org.apache.jetspeed.pipeline.JetspeedPipeline$Invocation.invokeNext(JetspeedPipeline.java:167) 
at org.apache.jetspeed.localization.impl.LocalizationValveImpl.invoke(LocalizationValveImpl.java:170) 
at org.apache.jetspeed.pipeline.JetspeedPipeline$Invocation.invokeNext(JetspeedPipeline.java:167) 
at org.apache.jetspeed.security.impl.AbstractSecurityValve$1.run(AbstractSecurityValve.java:138) 
at java.security.AccessController.doPrivileged(AccessController.java:215) 
at javax.security.auth.Subject.doAsPrivileged(Subject.java:645) 
at org.apache.jetspeed.security.JSSubject.doAsPrivileged(JSSubject.java:179) 
at org.apache.jetspeed.security.impl.AbstractSecurityValve.invoke(AbstractSecurityValve.java:132) 
at org.apache.jetspeed.pipeline.JetspeedPipeline$Invocation.invokeNext(JetspeedPipeline.java:167) 
at org.apache.jetspeed.container.url.impl.PortalURLValveImpl.invoke(PortalURLValveImpl.java:67) 
at org.apache.jetspeed.pipeline.JetspeedPipeline$Invocation.invokeNext(JetspeedPipeline.java:167) 
at org.apache.jetspeed.capabilities.impl.CapabilityValveImpl.invoke(CapabilityValveImpl.java:126) 
at org.apache.jetspeed.pipeline.JetspeedPipeline$Invocation.invokeNext(JetspeedPipeline.java:167) 
at org.apache.jetspeed.pipeline.JetspeedPipeline.invoke(JetspeedPipeline.java:146) 
at org.apache.jetspeed.engine.JetspeedEngine.service(JetspeedEngine.java:222) 
at org.apache.jetspeed.engine.JetspeedServlet.doGet(JetspeedServlet.java:242) 
at org.apache.jetspeed.engine.JetspeedServlet.doPost(JetspeedServlet.java:269) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:763) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856) 
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:989) 
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:930) 
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:145) 
at com.fmr.fc.common.authentication.ERLoginFilter.doFilter(ERLoginFilter.java:216) 
at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:190) 
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:130) 
at com.fmr.fc.common.authentication.FCLoginFilter.doFilter(FCLoginFilter.java:279) 
at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:190) 
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:130) 
at com.fmr.fc.common.authentication.CommonPortalFilter.doFilter(CommonPortalFilter.java:262) 
at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:190) 
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:130) 
at com.ibm.ws.webcontainer.filter.WebAppFilterChain._doFilter(WebAppFilterChain.java:87) 
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:761) 
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:673) 
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:498) 
at com.ibm.ws.wswebcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:464) 
at com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:90) 
at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:744) 
at com.ibm.ws.wswebcontainer.WebContainer.handleRequest(WebContainer.java:1439) 
at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:112) 
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:454) 
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java:383) 
at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:102) 
at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165) 
at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217) 
at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161) 
at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:136) 
at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:195) 
at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:743) 
at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:873) 
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1469) 

Répondre

1

Quelle est la version du pilote JDBC Oracle utilisez-vous?

Ceci était un problème connu avec ojdbc14.jar pour Oracle 9. Téléchargez le dernier pilote JDBC pour votre plate-forme et il devrait disparaître.

+0

Merci pour la réponse, j'ai vu ce problème lorsque j'ai googlé l'erreur plus tôt, mais j'utilise Oracle 10, Oracle JDBC Driver version - "10.2.0.2.0". Ce problème se produit lorsque je fais un delete(), save(), update(), saveOrUpdate() et si je le fais en obtenant manuellement la session et en commençant la transaction ou en utilisant hibernateTemplate. – Caroline

+0

Êtes-vous sûr que c'est la version que vous utilisez? A en juger par la trace de la pile, vous exécutez WebSphere; il peut avoir sa propre copie du pilote niché quelque part. Quoi qu'il en soit, la dernière version d'Oracle 10 est 10.2.0.4 et quelques bogues ont été corrigés: http://www.oracle.com/technology/software/tech/java/sqlj_jdbc/htdocs/readme_jdbc_10204.html Pensez à passer à il et voir si cela aide – ChssPly76

+0

Sur une enquête plus approfondie et après une recherche complète de ma machine il y a une version de 9.0.2 dans C: \ IBM \ SDP70 \ runtimes \ base_v61 \ lib mais ce n'est pas celui qui est dans mon java construire pat dans RAD. Quand je copie la version 10.0.2 sur lib mon serveur jette des exceptions de rollback quand il publie le projet .... – Caroline