如何使用Hibernate注释将Java日期映射到mysql中的DATETIME(默认情况下为TIMESTAMP)

我的所有数据库表都应该有一个endTime字段,默认情况下应该是END_OF_TIME或类似的东西。 我对2038的限制感到不满,所以我希望endTime在mysql中的类型为DATETIME。

我的Java代码是:

@MappedSuperclass @Inheritance(strategy=InheritanceType.TABLE_PER_CLASS) public class BaseDBEntity { @Id @Column(length=36) public String id; @Temporal(TemporalType.TIMESTAMP) public Date startTime; @Temporal(TemporalType.TIMESTAMP) public Date endTime; public BaseDBEntity() { } } 

我可以通过使用DATETIME类型的endTime字段手动创建表,然后将实体endTime映射到该列,但是我希望Hibernate自动生成表 – 我该怎么做?

使用@Column批注的columnDefinition属性:

 @Column(name = "startTime", columnDefinition="DATETIME") @Temporal(TemporalType.TIMESTAMP) private Date startTime; 

请将您的属性设为私有。