网上有很多帖子说明了这种情况多数是由于表中日期类型字段insert时传入的参数不匹配导致!!!
没错根本原因就是如此,下面记录一个奇怪的现象:
有下面一张表,注意uptime字段date类型不能为空但是有个默认值‘2018-11-02’
执行 插入语句成功
insert into CRMTESTINSERT(code, name) values(123, '123')
现象一:
在java 代码中通过 mybatis 插入会报下面的错误:
现象二:
或许你操作的表没有这样的日期字段,如果此表有触发器并且在触发器中插入了其它表B,表B有这中默认字符串格式的日期字段,也会出现ORA-01861的报错。
一种解决方法:
不使用数据库的默认字符串赋值,通过给对象uptime字段赋一个date类型的值。
或者参考网上关于oracle 日期类型字段insert插入不匹配的其它解决方法。
上面的工程使用的oracle驱动依赖如下:
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc14</artifactId>
<version>10.2.0.1.0</version>
</dependency>
猜测此错误可能和驱动有关,如果有大神了解还请不吝赐教!!