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

2022-09-01 08:11:43

我所有的数据库表都应该有一个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 自动生成表 - 我该怎么做?


答案 1

使用@Column注释的属性columnDefinition

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

请把你的属性设为私有。


答案 2

推荐