LocalDate.MAX无法在Oracle db中保留

时间:2017-05-11 12:55:20

标签: java oracle hibernate jpa

当我尝试坚持LocalDate.MAX时,我会遇到以下异常:

org.springframework.dao.InvalidDataAccessApiUsageException: Invalid year value; nested exception is java.lang.IllegalArgumentException: Invalid year value

LocalDate.MAX的定义是:

public static final LocalDate MAX = LocalDate.of(Year.MAX_VALUE, 12, 31);

Year.MAX_VALUE是:

public static final int MAX_VALUE = 999_999_999;

作为旁注,H2没有任何问题

为什么会这样?

是否有任何解决方法可以使其正常工作?

1 个答案:

答案 0 :(得分:2)

Oracle docs表示Oracle日期类型接受的年份最长为9999. This question也会处理此主题。

你可以通过将这些日期存储为数字(即毫秒)来解决这个问题吗?

您还可以尝试将日期存储为文本并将其解析回来,但这会增加开销,并且在查询中比较起来会更加困难。

另一种方法是在某些Util类中创建自己的MaxDate。