【发布时间】:2020-09-11 12:53:40
【问题描述】:
我正在使用 H2 数据库。我想用 data.sql 预填充我的数据库。但是现在我得到了例外,该日期无法转换。我什至得到一个 NumberFormatException。我真的不知道为什么。
INSERT INTO Client
VALUES ('10000000','12.10.2011','Petra','Trump');
在我的实体中,我也以同样的方式指定了日期。
@DateTimeFormat(pattern = "dd.MM.yyyy")
private LocalDate dateOfBirth;
所以我不明白可能出了什么问题。
要查看日期如何存储在数据库中,我尝试通过http://localhost:8080/h2-console 连接到 H2,但它总是说 JDBC URL : jdbc:h2:mem:testdb 不正确。所以我想知道我应该在那里输入什么。我只是使用引导和引导为我做了一切。
【问题讨论】:
-
我刚刚发现它是以这样的格式存储的。 'yyyy-MM-dd' 但是为什么。不同于@DateTimeFormat(pattern = "dd.MM.yyyy")
-
嗨@Josephine,我猜
data.sql是一种原生的h2 数据导入格式。所以它根本没有链接到java代码中的@DateTimeFormat注解。 -
啊哈。谢谢。不错的猜测。但是表格必须由 Hibernate 事先创建,我预计格式会受到 @DateTimeFormat(pattern = "dd.MM.yyyy") 的影响
-
日期时间值不应该用 SQL 写成字符串,有一个标准的日期文字:
DATE '2011-10-12';它可以在大多数数据库系统中使用。 H2 也支持诸如'2011-10-12'之类的字符串文字,但是它们的使用是个坏主意,在更复杂的命令中使用它们可能会遇到一些麻烦,并且它们不能在不同的数据库系统之间移植。数据库对您的实体、它们的字段和注释一无所知。
标签: spring-boot h2