通过外部属性文件 url 指定如下 jdbc:mariadb://xxxxx:3306/xxxxx?zeroDateTimeBehavior=convertToNull
连接工作正常并且能够查询数据库。 通过 hibernate ,我创建了一个映射到带有日期列的表的实体。如果未指定日期,则默认插入零日期 (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
关于java - ZeroDateTimeBehavior=convertToNull 在使用 hibernate 的 jdbc url 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55905022/