将Java 8 Instant存储为MySQL Int(不是时间戳)

时间:2018-09-22 15:37:17

标签: mysql sql hibernate jpa java-8

在我的应用程序中,我想为某些列存储纪元时间,因为该应用程序将在多个时区中使用,并且我想避免DST等。

我一直在愉快地使用Java 8中的其他新时间类来表示DateTime等。但是,我在验证自己的模式时发现Instant希望使用Timestamp类型而不是INT。

Schema-validation: wrong column type encountered in column [lastMessageSeenAt] in table [groupchatmember]; found [int (Types#INTEGER)], but expecting [datetime (Types#TIMESTAMP)]]

鉴于时间戳是一个额外的字节,并且仅在2038年之前,我宁愿使用INT。

有没有办法告诉休眠状态将INT用于Instant?

MySQL列定义:

lastMessageSeenAt INT(5) UNSIGNED NOT NULL DEFAULT 0

JPA字段定义:

@Column(name = "lastMessageSeenAt")
private Instant lastMessageSeenAt = Instant.MIN;

0 个答案:

没有答案