通过外部属性文件,URL指定如下
jdbc:mariadb:// xxxxx:3306 / xxxxx?zeroDateTimeBehavior = convertToNull
连接工作正常,并且能够查询数据库。
通过休眠,我创建了一个实体,该实体映射到带有日期列的表。如果未指定日期,则默认插入零日期(0000-00-00)。
当我从日期为零的实体中获得日期时,它给出的日期显示为00002-10-02,原因是Java日期无法处理零的年或月/日。
zeroDateTimeBehavior = convertToNull应该可以处理此问题并返回空值,因此我可以正确处理这些情况,而不会错误地返回一个完全错误的日期。
我已经阅读了大约50个论坛主题,但找不到解决方案。
让我知道是否可以提供更多信息。谢谢。
最佳答案
尝试使用zeroDateTimeBehavior = CONVERT_TO_NULL,这对我有用。
我也从文档中发现了这一点:
https://dev.mysql.com/doc/connector-j/8.0/en/connector-j-reference-configuration-properties.html
zeroDateTimeBehavior
What should happen when the driver encounters DATETIME values that are composed entirely of zeros (used by MySQL to represent invalid dates)?
Valid values are "EXCEPTION", "ROUND" and "CONVERT_TO_NULL".
Default: EXCEPTION
Since version: 3.1.4