当我尝试坚持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没有任何问题
为什么会这样?
是否有任何解决方法可以使其正常工作?
答案 0 :(得分:2)
Oracle docs表示Oracle日期类型接受的年份最长为9999. This question也会处理此主题。
你可以通过将这些日期存储为数字(即毫秒)来解决这个问题吗?
您还可以尝试将日期存储为文本并将其解析回来,但这会增加开销,并且在查询中比较起来会更加困难。
另一种方法是在某些Util类中创建自己的MaxDate。