字段定义
/** 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; }
我仍然会有同样的问题。
在这里,我将做出一个疯狂的猜测,即您正在使用MySQL :-)它使用“零日期”作为特殊的占位符 -不幸的是,默认情况下JDBC无法处理它们。
解决方案是将“ zeroDateTimeBehavior = convertToNull”指定为MySQL连接的参数(在数据源URL中或作为其他属性),例如:
jdbc:mysql://localhost/myDatabase?zeroDateTimeBehavior=convertToNull
这将导致将所有此类值检索为NULL。