考虑以下 DDL,我在其中一个 JUnit 测试用例中使用它来创建 H2 数据库表:
CREATE TABLE "CONFIG_INFO"
( "ID" VARCHAR2(12 BYTE),
"RUN_DATE" DATE,
);
我正在为其编写单元测试的类尝试在此表中插入一条记录。我可以看到执行以下查询以插入记录:
insert into CONFIG_INFO(ID,RUN_DATE) values (?,?)
但是,插入失败,但出现以下异常:
org.springframework.dao.DataIntegrityViolationException: PreparedStatementCallback; SQL [insert into CONFIG_INFO(ID,RUN_DATE) values (?,?)]; Cannot parse "DATE" constant "31-Jan-20";
我环顾四周,发现这个问题通常发生在您将时间组件作为日期的一部分时;但是,调试了代码,我可以看到 Java 代码正在传递“20 年 1 月 31 日”,没有时间戳组件,这也可以从上面的错误消息中看出。
如何解决此错误?