给oracle数据库插入数据的时候报错说不能插入空值:

Error setting null for parameter #3 with JdbcType OTHER . Try setting a different JdbcType for this parameter or a different jdbcTypeForNull configuration property.
java.sql.SQLException: 无效的列类型: 1111
	at oracle.jdbc.driver.OracleStatement.getInternalType(OracleStatement.java:3950) ~[ojdbc6-11.2.0.3.jar:11.2.0.3.0]
	at oracle.jdbc.driver.OraclePreparedStatement.setNullCritical(OraclePreparedStatement.java:4559) ~[ojdbc6-11.2.0.3.jar:11.2.0.3.0]
	at oracle.jdbc.driver.OraclePreparedStatement.setNull(OraclePreparedStatement.java:4541) ~[ojdbc6-11.2.0.3.jar:11.2.0.3.0]
	at oracle.jdbc.driver.OraclePreparedStatementWrapper.setNull(OraclePreparedStatementWrapper.java:1283) ~[ojdbc6-11.2.0.3.jar:11.2.0.3.0]
	at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.setNull(HikariProxyPreparedStatement.java) ~[HikariCP-3.4.5.jar:na]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_91]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_91]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_91]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_91]

查了资料说是oracle数据库不支持直接插入null的时间类型,
解决办法
在sql语句插入值的时候加上相关类型{uneffectTime,jdbcType=DATE}

 <insert id="addRole" parameterType="com.sie.demo.entity.Role">
        insert into role(role_id,role_name,effect_time,uneffect_time,note,status,create_time,update_time)
         values (ROLE_ROLE_ID.NEXTVAL,#{roleName},#{effectTime,jdbcType=DATE},#{uneffectTime,jdbcType=DATE},#{note},#{status},#{createTime},#{updateTime})
    </insert>

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐