首页 > 解决方案 > 使用 java.time 休眠

问题描述

我像这样使用休眠:

 <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
            <version>5.2.12.Final</version>
 </dependency>

我读到自 Hibernate 5.2 以来,就有对 java.time 的本机支持。

我的实体字段仍然是 java.util.Date,我想使用 LocalDateTime 查找实体。

但是,我收到异常 InvalidDataAccessApiUsageException 消息“参数值 [2020-02-26T00:00] 与预期类型 java.util.date 不匹配”。

不应该自动转换 LocalDateTime 吗?

标签: javaspringhibernatespring-data-jpaspring-data

解决方案


不应该自动转换 LocalDateTime 吗?

不,盖子后面没有魔法可以将java.util.Date物体投射到java.time.LocalDateTime反之亦然。 现在,您可以自己手动转换对象,但我建议您不要这样做。在应用程序的所有层中使用相同的数据类型被认为是一种很好的做法。

旁注:请记住,java.util.Date这是一个较老的课程,并没有考虑很多事情(例如闰年)。LocalDateTime相反,它具有更多功能并且非常强大。这一切都取决于您的用例场景。我建议阅读这两个类的文档,以确定哪一个更适合您。此外,这个答案在比较 Java 中的大多数日期时间类型方面做得很好


推荐阅读