google一下都是ibatis的解决办法,我拷过来都不管用,
<resultMap type="com.umpay.aks.merchant.form.Merchant" id="merchantMap">
<id property="merchantId" column="merchantId" jdbcType="VARCHAR"/>
<result property="merchantName" column="merchantName" jdbcType="VARCHAR"/>
<result property="password" column="password" jdbcType="VARCHAR"/>
<result property="telephone" column="telephone" jdbcType="VARCHAR"/>
<result property="descrip" column="descrip" jdbcType="VARCHAR"/>
<result property="address" column="address" jdbcType="VARCHAR"/>
<result property="sign" column="sign" jdbcType="VARCHAR"/>
<result property="certificate" column="certificate" jdbcType="VARCHAR"/>

</resultMap>
<insert id="insert" parameterType="com.umpay.aks.merchant.form.Merchant">
<![CDATA[
     insert into MERCHANT 
     (merchantId,merchantName,password,telephone,descrip,address,sign,certificate) 
     values 
     (#{merchantId},#{merchantName},#{password},#{telephone},#{descrip},#{address},#{sign},#{certificate})
     ]]>
</insert>
这是我sql语句,大家看看怎么改!!

解决方案 »

  1.   

    不是很明白,空值报错,是oracle数据库不可以存空值,还是LZ程序空值,错误贴出来。
      

  2.   

    错误是啥?是不是Oracle中这张表的字段不允许为空?
      

  3.   

    org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: 
    ### Error updating database.  Cause: org.apache.ibatis.type.TypeException: Error setting null parameter.  Most JDBC drivers require that the JdbcType must be specified for all nullable parameters. Cause: java.sql.SQLException: 无效的列类型
    ### The error may involve merchantMapper.insert-Inline
    ### The error occurred while setting parameters
    ### Cause: org.apache.ibatis.type.TypeException: Error setting null parameter.  Most JDBC drivers require that the JdbcType must be specified for all nullable parameters. Cause: java.sql.SQLException: 无效的列类型
    at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:67)
    at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:345)
    at $Proxy25.insert(Unknown Source)
    at org.mybatis.spring.SqlSessionTemplate.insert(SqlSessionTemplate.java:235)
    at com.umpay.aks.merchant.dao.MerchantDAOImpl.insertMerchant(MerchantDAOImpl.java:21)
    at com.umpay.aks.merchant.service.MerchantServiceImpl.saveMerchant(MerchantServiceImpl.java:39)
    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 org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:309)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
    at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
    at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
    at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
    at $Proxy11.saveMerchant(Unknown Source)
    at com.umpay.aks.merchant.web.MerchantController.saveMerchant(MerchantController.java:24)
    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 org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:176)
    at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:426)
    at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:414)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:790)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
    at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:560)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at com.umpay.aks.filter.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:39)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:928)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:539)
    at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1815)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:662)
    Caused by: org.apache.ibatis.exceptions.PersistenceException: 
    ### Error updating database.  Cause: org.apache.ibatis.type.TypeException: Error setting null parameter.  Most JDBC drivers require that the JdbcType must be specified for all nullable parameters. Cause: java.sql.SQLException: 无效的列类型
    ### The error may involve merchantMapper.insert-Inline
    ### The error occurred while setting parameters
    ### Cause: org.apache.ibatis.type.TypeException: Error setting null parameter.  Most JDBC drivers require that the JdbcType must be specified for all nullable parameters. Cause: java.sql.SQLException: 无效的列类型
    at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:8)
    at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:120)
    at org.apache.ibatis.session.defaults.DefaultSqlSession.insert(DefaultSqlSession.java:107)
    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 org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:341)
    ... 52 more
    Caused by: org.apache.ibatis.type.TypeException: Error setting null parameter.  Most JDBC drivers require that the JdbcType must be specified for all nullable parameters. Cause: java.sql.SQLException: 无效的列类型
    at org.apache.ibatis.type.BaseTypeHandler.setParameter(BaseTypeHandler.java:17)
    at org.apache.ibatis.executor.parameter.DefaultParameterHandler.setParameters(DefaultParameterHandler.java:73)
    at org.apache.ibatis.executor.statement.PreparedStatementHandler.parameterize(PreparedStatementHandler.java:61)
    at org.apache.ibatis.executor.statement.RoutingStatementHandler.parameterize(RoutingStatementHandler.java:43)
    at org.apache.ibatis.executor.SimpleExecutor.prepareStatement(SimpleExecutor.java:56)
    at org.apache.ibatis.executor.SimpleExecutor.doUpdate(SimpleExecutor.java:28)
    at org.apache.ibatis.executor.BaseExecutor.update(BaseExecutor.java:75)
    at org.apache.ibatis.executor.CachingExecutor.update(CachingExecutor.java:43)
    at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:118)
    ... 58 more
    Caused by: java.sql.SQLException: 无效的列类型
    at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:189)
    at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:231)
    at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:294)
    at oracle.jdbc.driver.OracleStatement.get_internal_type(OracleStatement.java:5992)
    at oracle.jdbc.driver.OraclePreparedStatement.setNull(OraclePreparedStatement.java:1169)
    at org.apache.tomcat.dbcp.dbcp.DelegatingPreparedStatement.setNull(DelegatingPreparedStatement.java:108)
    at org.apache.tomcat.dbcp.dbcp.DelegatingPreparedStatement.setNull(DelegatingPreparedStatement.java:108)
    at org.apache.ibatis.type.BaseTypeHandler.setParameter(BaseTypeHandler.java:15)
    ... 66 more
      

  4.   

    无效数据类型,这个一般是sql 语句问题,看看sql 语句有没有加特殊符号 比如结尾 加上了 ;
      

  5.   

    我用的是ibatis 楼主这样写看行不行,参数带上数据类型insert into RULE (pid,VERSIONRULELIST, VERSIONRULESTATE, CATEGORYID, ADDERID, ADDERNAME,
          DESCP, VERSIONRULENAME, ALLOWJUMPSERY, ALLOWJUMPNUMBER, ADDTIME,
          LATESTEDITTIME)
        values (#pid:DECIMAL#,#versionrulelist:VARCHAR#, #versionrulestate:DECIMAL#, #categoryid:DECIMAL#,
          #adderid:DECIMAL#, #addername:VARCHAR#, #descp:VARCHAR#,
          #versionrulename:VARCHAR#, #allowjumpsery:DECIMAL#, #allowjumpnumber:DECIMAL#,
          #addtime:TIMESTAMP#, #latestedittime:TIMESTAMP#)
      

  6.   

    这个错误是因为mybatis不支持向oracle数据库插入空值造成的,我在网上查到了,但解决办法都是以前ibatis的,6楼的我试过,不行,我是想问问有没有用最新mybatis解决这个问题的!!!
      

  7.   

    http://hi.baidu.com/%D0%A1%B4%D0%BB%A8wwtao/blog/item/4d35a03fe657c2ee838b1301.htmlmybatis insert空值,在sqlplus中直接执行可以插入空值,但是在action中接收到控制之后,传递到mybatis中就报空值异常····,解决方法:在insert语句的values()中,这样写:
    #{strKnowWayId, jdbcType=VARCHAR}, #{appDate, jdbcType=DATE}, #{dblRegFund, jdbcType=NUMERIC}这里需要注意,在数据中所有可能为空的列,都需要加上“ jdbcType=<数据库的数据类型>”声明