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

标签 java mysql hibernate jdbc mariadb

通过外部属性文件 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/

相关文章:

java - 如何在 Java 中获取 .class 的所有属性?

java - 带有嵌入式服务器的 JAX-RS

java - 基于 DOM 与基于 StAX 的 WS-Security

mysql - 创建过程并将变量设置为查询时出错

javascript - 使用ajax在while循环中更新MySql数据库记录 - 仅更新第一行

java - 连接多个辅助表

Java TextField getText() 给我一个无法比较的字符串

java - 使用Spring MVC将Excel导入Mysql

pojo 类的 Hibernate 表

java - Hibernate - 从注释到 XML 配置文件