无法将'0000-00-00 00:00:00'转换为TIMESTAMP

Ole*_*ndr 28 java hibernate hql date

字段定义

 /** Date. */
  @Column(columnDefinition = "datetime")
  private Date date;
Run Code Online (Sandbox Code Playgroud)

二传手

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();
    }

  }
Run Code Online (Sandbox Code Playgroud)

有没有人知道如何将"零日期"转换为适当的值?因为我有错误:

Cannot convert value '0000-00-00 00:00:00' from column 13 to TIMESTAMP
Run Code Online (Sandbox Code Playgroud)

即使我设置"默认"字段和setter如下:

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


public void setDate(final Date date) {
      this.date = date;   
  }
Run Code Online (Sandbox Code Playgroud)

我还会遇到同样的问题....

Chs*_*y76 67

我将在这里猜测你正在使用MySQL :-)它使用"零日期"作为特殊占位符 - 不幸的是,JDBC默认情况下无法处理它们.

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

jdbc:mysql://localhost/myDatabase?zeroDateTimeBehavior=convertToNull
Run Code Online (Sandbox Code Playgroud)

这将导致所有此类值都被检索为NULL.