java - 将 LocalDate.MAX 转换为日期

标签 java spring jpa

我们正在使用 Spring Data JPA 访问 Derby-DB。时间值定义为 java.time.LocalDate(java 8 时间 api)。 Spring Data 现在随附了 org.springframework.data.convert.Jsr310Converters.LocalDateToDateConverter 以将 LocalDate 转换为 java.util.Date,因为据我所知,JPA 规范目前不支持 LocalDate。

我们现在在将 LocalDate.MAX 转换为 Date 时遇到问题,导致以下异常(已删除):

Caused by: java.lang.IllegalArgumentException: java.lang.ArithmeticException: long overflow
at java.util.Date.from(Unknown Source)
at org.springframework.data.convert.Jsr310Converters$LocalDateToDateConverter.convert(Jsr310Converters.java:116)
at org.springframework.data.jpa.convert.threeten.Jsr310JpaConverters$LocalDateConverter.convertToDatabaseColumn(Jsr310JpaConverters.java:52)
at org.springframework.data.jpa.convert.threeten.Jsr310JpaConverters$LocalDateConverter.convertToDatabaseColumn(Jsr310JpaConverters.java:47)
at org.hibernate.type.descriptor.converter.AttributeConverterSqlTypeDescriptorAdapter$1.bind(AttributeConverterSqlTypeDescriptorAdapter.java:97)
... 79 more
Caused by: java.lang.ArithmeticException: long overflow
at java.lang.Math.multiplyExact(Unknown Source)
at java.time.Instant.toEpochMilli(Unknown Source)
... 84 more

有谁也遇到过这个问题并且有解决这个问题的建议吗?

最佳答案

java.util.Date 不支持遥远 future 的日期。查看其 javadoc :

Instant can store points on the time-line further in the future and further in the past than Date.

因此,您必须定义自己的 JPA AttributeConverter 并将其存储为字符串或其他类型

关于java - 将 LocalDate.MAX 转换为日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35149884/

相关文章:

java - 如何根据用户的选择动态生成SQL查询?

java - 通过 MAT 了解内存泄漏

java - Svn从分支合并到主干而不删除主干(或其历史记录)

java - 使用EntityManager通过jdbcAuthentication实现Spring Security

spring - 如何使用 JavaConfig 从 Spring Security 中删除 ROLE_ 前缀?

java - 加载其他数据库中的元素(Hibernate/Jpa/Spring)

Java 正则表达式 - 恰好有一个空格的表达式

Java:为什么反序列化不调用构造函数以及最好的解决方法是什么?

java - EasyMock 和 @Value 注解

java - 面向 future 的 SQL 表?