在 Hibernate 5.1 中使用 java.time

Use java.time in Hibernate 5.1

我在我的应用程序中使用 Hibernate 5.1。现在我想将所有 java.util.date 类 转换为 java.time java 8 类。我将所有源代码更改为新的 Java 8 标准。但是当我查询包含到 LocalData 的映射的第一个查询时,它会抛出一个错误:

java.lang.ClassCastException: java.sql.Date cannot be cast to java.time.LocalDate

Hibernate-java8 jar 在我的类路径中。

有人可以帮我用 java.time 类 代替旧的 java.util.date 吗? 我需要在我的 Hibernate 配置中为它配置一些东西吗?

我认为问题不在于 Hibernate 5.1LocaleDate 的支持,异常表明从 java.sql.Datejava.time.LocaleDate 有一个 cast Exception

如果勾选 Hibernate 5.1 User Guide you can see that Hibernate provides a replamcement type for the java.time.LocaleDate which is LocalDateType class.

因此,您应该在实体中使用 org.hibernate.type.LocalDateType,而不是使用 java.time.LocaleDate