【发布时间】:2018-06-13 15:12:53
【问题描述】:
我在保留 LocalDate 字段时遇到以下错误 [在列中使用 VARCHAR(20) 类型]:
Value too long for column "BIRTH_DATE VARCHAR(20)":"'aced00057372000d6a6176612e74696d652e536572955d84ba1b2248b20c00007870770703000007e2060c78' (88)";
字段定义如下:
@Column(name = "BIRTH_DATE")
private LocalDate date;
@Column(name = "BIRTH_TIME")
private LocalTime time;
我正在使用 spring 数据启动器 (1.5.9.RELEASE)。内部使用hibernate 5.0.12。
根据博文https://www.thoughts-on-java.org/hibernate-5-date-and-time/
Hibernate 5,开箱即用地支持 Java 8 功能(DateTime API)。那么,为什么会出现这个错误。
我已经检查过了,并且正在运行时创建一个有效的 LocalDate 对象。但是在持续存在时会引发错误。这是调用save()之前的调试屏幕截图
如果我将列类型更改为 DATE,错误将变为以下内容:
java.lang.IllegalArgumentException: aced00057372000d6a6176612e74696d652e536572955d84ba1b2248b20c00007870770703000007e2060c78
at org.h2.util.DateTimeUtils.parseDateValue(DateTimeUtils.java:313) ~[h2-1.4.196.jar:1.4.196]
【问题讨论】:
-
您的 BIRTH_DATE 列似乎是数据库中的 varchar。你能确认一下吗?
-
是的。但即使将其更改为日期类型。错误仍然存在。
标签: java hibernate date java-8