我想签署 jwt 令牌,LocalDateTime该令牌是在创建用户后收到的。之后,我需要检查 jwt 是否有效,并且我通过从数据库检索的日期来实现这一点。
问题是LocalDateTime创建时包含纳秒,而数据库中的日期不包含纳秒,然后验证失败。
我尝试通过格式化LocalDateTime以显示没有纳秒的日期来解决此问题,但还有另一个问题。LocalDateTime四舍五入为下限(例如,1.222 为 1,1.777 为 1),并且插入数据库中的日期四舍五入为 1.222 为 1,1.777 为 2,因此验证再次失败。
我设法通过@Column(columnDefinition = "TIMESTAMP (6)")在实体中添加我的字段来解决此问题,现在纳秒也存储在数据库中,并且一切正常,但我不确定这是正确的解决方案。
那么有没有更好的解决方案呢?我可以以某种方式LocalDateTime与数据库中的舍入相同(并将数据库字段类型保留为DATETIME而不是TIMESTAMP),或者可以将数据库日期舍入为LocalDateTime。
我正在使用 Spring Boot 2.2.4