ZeroDateTimeBehavior=convertToNull 在使用 hibernate 的 jdbc url 中不起作用

Vis*_*ker 2 java mysql hibernate jdbc mariadb

通过外部属性文件 url 指定为以下 jdbc:mariadb://xxxxx:3306/xxxxx?zeroDateTimeBehavior=convertToNull

连接工作正常并且能够查询数据库。通过休眠,我创建了一个映射到带有日期列的表的实体。如果未指定日期,则默认插入零日期 (0000-00-00)。当我从日期为零的实体中获取日期时,它会给出显示为 00002-10-02 的日期,因为 java 日期无法处理为零的年或月/日。

ZeroDateTimeBehavior=convertToNull 应该处理这个问题并返回空值,这样我就可以正确处理这些情况,而不会错误地返回完全错误的日期。

我阅读了大约 50 个论坛主题,但未能找到解决方案。如果我可以提供更多信息,请告诉我。谢谢。

Jos*_*ado 5

尝试使用 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
Run Code Online (Sandbox Code Playgroud)