当前位置: 首页 > 面试题库 >

如何在带有Hibernate注释的mysql中将Java日期映射到DATETIME(默认为TIMESTAMP)

柳鸿信
2023-03-14
问题内容

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


问题答案:

使用注释的columnDefinition属性:@Column

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

并且请将您的属性设为私有。



 类似资料:
  • 后续问题。有这样的等级制度。其中A是基类: 以及以下内容: 我想将B实例的所有ID映射到B.isVisible()的值,并将C实例的ID映射到TRUE 在最初问题的帮助下,我将其提炼为以下格式: 丑陋的版本是: 有没有帮助改进它,为更优雅的版本提供默认true?

  • 问题内容: 我目前正在使用当前习惯用法创建UTC DateTime对象 是否有任何默认方法,所以我可以使用默认构造函数创建基于UTC的DateTime对象,从而使其更加隐式? 问题答案: 如果您只想为joda时间设置默认时区,请使用。 如果要更改整个jvm使用的时区,请使用方法。只需确保将其设置为早,因为它可以按joda时间进行缓存。.. 引用: 默认时区来自系统属性user.timezone。如

  • 问题内容: 每个人。我收到此错误: 对于这段代码 关于为什么发生这种情况的任何建议,我都会吸用结构化语言,以便您知道:) 问题答案: 使用。

  • 我有一个简单的Maven servlet/jsp应用程序,我部署到本地Tomcat 9(通过Eclipse)。JSP页面存储在根文件夹()下,当Maven安装WAR时,它们位于根文件夹(旁边的和)下。 servlet的URL模式是为每个servlet注释的,例如,等。大多数servlet执行对各种JSP页面的调度,但是我在其中一个页面上有一个直接的锚链接。 我想将这些JSP页面移动到各自的目录中,

  • 问题内容: 我有一张桌子DEAL和一张桌子DEAL_TYPE。我想映射以下代码: 问题在于数据已经存在于数据库中。而且我很难将类映射到数据库。 数据库看起来像这样: 我知道我可以在交易类型之间使用简单的@OneToMany关系,但是我更喜欢使用枚举。这可能吗? 我几乎可以通过使用EnumType.ORDINAL类型来使其工作。但不幸的是,我的交易类型表中的ID不是连续的,并且不是从1开始。 有什么

  • 我在互联网上搜索过,看到了关于在mysql中使用Hibernate注释在实体类中设置默认值的想法,我已经完成了将默认值设置为具有数据类型整数的列,如下所示。 而且工作得很好。 但是我没有看到任何varchar/string数据类型的示例,我尝试了columnDefinition中的不同类型,比如, 使用“长度”属性:- 等等。 但在这种情况下,表不是由hibernate创建的,这可能是由于语法错误