一尘不染

无法将“ 0000-00-00 00:00:00”转换为TIMESTAMP

hibernate

字段定义

 /** Date. */
  @Column(columnDefinition = "datetime")
  private Date date;

二传手

public void setDate(final Date date) {
    DateFormat dfmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    try {
      this.date = dfmt.parse(dfmt.format(date));
    } catch (ParseException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }

  }

有谁知道如何将“零日期”转换为适当的值?因为我有错误:

Cannot convert value '0000-00-00 00:00:00' from column 13 to TIMESTAMP

即使我像这样设置“默认”字段和设置器:

/** Date. */
      @Column
      private Date date;


public void setDate(final Date date) {
      this.date = date;   
  }

我仍然会有同样的问题。


阅读 584

收藏
2020-06-20

共1个答案

一尘不染

在这里,我将做出一个疯狂的猜测,即您正在使用MySQL
:-)它使用“零日期”作为特殊的占位符 -不幸的是,默认情况下JDBC无法处理它们。

解决方案是将“ zeroDateTimeBehavior =
convertToNull”指定为MySQL连接的参数(在数据源URL中或作为其他属性),例如:

jdbc:mysql://localhost/myDatabase?zeroDateTimeBehavior=convertToNull

这将导致将所有此类值检索为NULL。

2020-06-20