我有一个 MySQL 数据库(旧版),我正在为其编写 JPA 层。我使用 Hibernate 作为 JPA 提供程序,并已将我的数据库表映射到带注释的 Java 类。
数据库中的一列包含时间戳并具有默认值(全为零,即 0000-00-00 00:00:00,但无论此默认值是否为其他值,问题都是相同的):
releasedate TIMESTAMP DEFAULT '0000-00-00 00:00:00'
注释如下:
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "releasedate", nullable = false, length = 19)
public Date getReleasedate() {
return this.releasedate;
}
通常,我在创建新条目时需要默认值,因此在持久保存它之前我不会在我的 Java 对象中设置日期(它为空)。
但是,这会导致将日期设置为现在,而不是默认值。
我可以将“可插入”注释元素设置为“false”,但这是不可取的,因为有时我确实想在创建时设置自定义日期。
我还尝试在注释中提供列定义(如此处所述),但无济于事。
我确实在读取全零日期时间值时遇到了问题(如此处所述),并通过将 JDBC 属性“zeroDateTimeBehavior”设置为“convertToNull”解决了这个问题。这解决了阅读的问题,但写作的问题仍然存在。
有人对在这种情况下该怎么做有任何想法吗?
干杯!