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

发布于 2024-12-12 18:52:28 字数 549 浏览 2 评论 0 原文

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

All my db tables should have an endTime field which by default should be END_OF_TIME or something like that. I am not happy about the 2038 limitation so I want endTime to be of type DATETIME in mysql.

My Java code is:

@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() {
}

}

I can work around by creating the table manually with an endTime field of type DATETIME, and than map the entity endTime to that column, however I would like Hibernate to generate the tables automatically - how can I do that?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

超可爱的懒熊 2024-12-19 18:52:28

使用 columnDefinition 属性>@Column 注释

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

请将您的属性设置为私有。

Use the columnDefinition attribute of the @Column annotation:

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

And please, make your attributes private.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文