java - 使用 java.time 进行 hibernate

标签 java spring hibernate spring-data-jpa spring-data

我像这样使用 Hibernate:

 <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吗?

最佳答案

Is it not supposed to convert the LocalDateTime automatically ?

不,背后并没有什么魔法可以将 java.util.Date 对象转换为 java.time.LocalDateTime,反之亦然 - 自动
现在,您可以手动 convert the objects yourself ,但我建议不要这样做。在应用程序的所有层中使用相同的数据类型被认为是一种很好的做法。

旁注:请记住,java.util.Date 是一个较旧的类,并且不考虑很多事情(例如闰年)。相反,LocalDateTime 具有更多功能并且非常强大。这完全取决于您的用例场景。我建议阅读这两个类(class)的文档,以确定哪一个更适合您。另外,这个答案在 comparing most date-time types in Java 上做得很好。

关于java - 使用 java.time 进行 hibernate ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60421513/

相关文章:

java - 如何获取 java 的 restful GET/POST 方法列表?

java - Java中Integer转换为int作为栈的返回类型

java - JPQL 数组中的 where 查询

java - 在 Java 中读取 IDML 文件

java - 从 ServletContext 资源解析 XML 文档时出现意外异常

java - spring 应用程序未在对象上找到属性

mysql - 在 Spring Boot 中从 mysql 读取时出现奇怪的超时

java - JPA 元模型字段为空

java - 如何保证事务服务方法中的行级唯一约束?

java - 在不同的程序中同时使用同一个数据库