Hi all,
I'm using stripes+ejb3+jboss+db2/as400.
I'm having a weird problem when trying to insert/update a null date into the database.
Hibernate complains that it can't bind null to the parameter. That parameter is a java.util.Date on the bean, and a
DB2 DATE field (nullable) on the database.
If I do the update manually on the database console it works fine.
If I change the entity bean to map to a MySQL table it works fine.
So why doesn't it work with DB2? Am I missing something?
Thanks,
Joao
PS - All non-null operations work fine with DB2. Also fetching null dates from the database works fine. Only inserting/updating have problems.
Here's an excerpt from the log:
2009-02-11 16:22:35,671 TRACE [org.hibernate.persister.entity.AbstractEntityPersister] Updating entity: [pt.sibace.gestaoviagens.Reserva#1]
2009-02-11 16:22:35,671 DEBUG [org.hibernate.jdbc.AbstractBatcher] about to open PreparedStatement (open PreparedStatements: 0, globally: 0)
2009-02-11 16:22:35,671 DEBUG [org.hibernate.jdbc.ConnectionManager] opening JDBC connection
2009-02-11 16:22:35,671 DEBUG [org.hibernate.SQL] update gesviagens.reserva set observacoes=?, num_participantes=?, viagem_id=?, data_reserva=? where id=?
2009-02-11 16:22:35,671 TRACE [org.hibernate.jdbc.AbstractBatcher] preparing statement
2009-02-11 16:22:35,671 TRACE [org.hibernate.persister.entity.AbstractEntityPersister] Dehydrating entity: [pt.sibace.gestaoviagens.Reserva#1]
2009-02-11 16:22:35,671 TRACE [org.hibernate.type.StringType] binding null to parameter: 1
2009-02-11 16:22:35,671 TRACE [org.hibernate.type.IntegerType] binding '0' to parameter: 2
2009-02-11 16:22:35,687 TRACE [org.hibernate.type.IntegerType] binding '1' to parameter: 3
2009-02-11 16:22:35,687 TRACE [org.hibernate.type.TimestampType] binding null to parameter: 4
2009-02-11 16:22:35,687 INFO [org.hibernate.type.TimestampType] could not bind value 'null' to parameter: 4; Parameter type not valid.
2009-02-11 16:22:35,687 TRACE [org.hibernate.jdbc.AbstractBatcher] closing statement
2009-02-11 16:22:35,687 DEBUG [org.hibernate.jdbc.ConnectionManager] skipping aggressive-release due to flush cycle
2009-02-11 16:22:35,687 DEBUG [org.hibernate.util.JDBCExceptionReporter] could not update: [pt.sibace.gestaoviagens.Reserva#1] [update gesviagens.reserva set observacoes=?, num_participantes=?, viagem_id=?, data_reserva=? where id=?]
java.sql.SQLException: Parameter type not valid.
at com.ibm.as400.access.JDError.throwSQLException(JDError.java:305)
at com.ibm.as400.access.AS400JDBCPreparedStatement.testSQLType(AS400JDBCPreparedStatement.java:1921)
at com.ibm.as400.access.AS400JDBCPreparedStatement.setNull(AS400JDBCPreparedStatement.java:1465)
at org.jboss.resource.adapter.jdbc.WrappedPreparedStatement.setNull(WrappedPreparedStatement.java:277)
at org.hibernate.type.NullableType.nullSafeSet(NullableType.java:129)
at org.hibernate.type.NullableType.nullSafeSet(NullableType.java:107)
at org.hibernate.persister.entity.AbstractEntityPersister.dehydrate(AbstractEntityPersister.java:1997)
at org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:2371)
at org.hibernate.persister.entity.AbstractEntityPersister.updateOrInsert(AbstractEntityPersister.java:2307)
at org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:2607)
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:298)
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.ejb.AbstractEntityManagerImpl$1.beforeCompletion(AbstractEntityManagerImpl.java:515)
at com.arjuna.ats.internal.jta.resources.arjunacore.SynchronizationImple.beforeCompletion(SynchronizationImple.java:114)
at com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.beforeCompletion(TwoPhaseCoordinator.java:249)
at com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.end(TwoPhaseCoordinator.java:88)
at com.arjuna.ats.arjuna.AtomicAction.commit(AtomicAction.java:177)
at com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.commitAndDisassociate(TransactionImple.java:1256)
at com.arjuna.ats.internal.jta.transaction.arjunacore.BaseTransaction.commit(BaseTransaction.java:135)
at com.arjuna.ats.jbossatx.BaseTransactionManagerDelegate.commit(BaseTransactionManagerDelegate.java:87)
at org.jboss.aspects.tx.TxPolicy.endTransaction(TxPolicy.java:175)
at org.jboss.aspects.tx.TxPolicy.invokeInOurTx(TxPolicy.java:87)
at org.jboss.aspects.tx.TxInterceptor$Required.invoke(TxInterceptor.java:191)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
at org.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInterceptor.java:76)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
at org.jboss.ejb3.stateless.StatelessInstanceInterceptor.invoke(StatelessInstanceInterceptor.java:62)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
at org.jboss.aspects.security.AuthenticationInterceptor.invoke(AuthenticationInterceptor.java:77)
at org.jboss.ejb3.security.Ejb3AuthenticationInterceptor.invoke(Ejb3AuthenticationInterceptor.java:106)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
at org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterceptor.java:46)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
at org.jboss.ejb3.asynchronous.AsynchronousInterceptor.invoke(AsynchronousInterceptor.java:106)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
at org.jboss.ejb3.stateless.StatelessContainer.localInvoke(StatelessContainer.java:214)
at org.jboss.ejb3.stateless.StatelessContainer.localInvoke(StatelessContainer.java:184)
at org.jboss.ejb3.stateless.StatelessLocalProxy.invoke(StatelessLocalProxy.java:81)
at $Proxy85.findReserva(Unknown Source)
at pt.sibace.intranet.viagens.GestaoViagens.loadReserva(GestaoViagens.java:411)
at pt.sibace.intranet.viagens.GestaoViagens.formDetalhesReserva(GestaoViagens.java:337)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at net.sourceforge.stripes.controller.DispatcherHelper$6.intercept(DispatcherHelper.java:442)
at net.sourceforge.stripes.controller.ExecutionContext.proceed(ExecutionContext.java:158)
at net.sourceforge.stripes.controller.BeforeAfterMethodInterceptor.intercept(BeforeAfterMethodInterceptor.java:113)
at net.sourceforge.stripes.controller.ExecutionContext.proceed(ExecutionContext.java:155)
at net.sourceforge.stripes.controller.ExecutionContext.wrap(ExecutionContext.java:74)
at net.sourceforge.stripes.controller.DispatcherHelper.invokeEventHandler(DispatcherHelper.java:440)
at net.sourceforge.stripes.controller.DispatcherServlet.invokeEventHandler(DispatcherServlet.java:285)
at net.sourceforge.stripes.controller.DispatcherServlet.doPost(DispatcherServlet.java:167)
at net.sourceforge.stripes.controller.DispatcherServlet.doGet(DispatcherServlet.java:67)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at net.sourceforge.stripes.controller.StripesFilter.doFilter(StripesFilter.java:246)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at pt.sibace.intranet.SecurityFilter.doFilter(SecurityFilter.java:57)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:179)
at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:156)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:241)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:580)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)
2009-02-11 16:22:35,687 WARN [org.hibernate.util.JDBCExceptionReporter] SQL Error: -99999, SQLState: HY105
2009-02-11 16:22:35,687 ERROR [org.hibernate.util.JDBCExceptionReporter] Parameter type not valid.
|