【问题标题】:JPA/Hibernate Auto generated timestamp field is not loaded未加载 JPA/Hibernate 自动生成的时间戳字段
【发布时间】:2017-11-03 04:17:08
【问题描述】:

在我的实体中,我有两个字段 -

@Temporal(TemporalType.TIMESTAMP)
@Column(columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP")
private Date created;

@Temporal(TemporalType.TIMESTAMP)
@Column(columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP")
private Date updated;

当创建新实体时,这两个字段被填充(我已经检查了 DB)。但不幸的是,在实体被持久化之后,这些字段不会加载到实体(我的意思是对象)上,如果我获取实体,这些字段也不会加载。

我正在使用spring-boot and spring-boot-starter-data-jpa of version 1.5.3-RELEASE,与MySQL

感谢任何帮助。提前致谢。

【问题讨论】:

  • 您能否确认您是在新会话中加载实体,或者您以不同的方式强制执行该实体实际上是从数据库中加载的?
  • @JensSchauder:我不确定你所说的新会话是什么意思,但我试图在新事务中加载实体。它没有用。我知道的唯一不同的方法是从数据库手动加载它们,这将使 JPA 的使用无效。

标签: hibernate jpa spring-boot spring-data spring-data-jpa


【解决方案1】:

对于创建和更新时间戳,您可以使用以下代码,

创作

@CreationTimestamp
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "CREATED", updatable = false)
private Date Created;

更新

@UpdateTimestamp
@Column(name = "UPDATED")
@Temporal(TemporalType.TIMESTAMP)
private Date Updated;

【讨论】:

  • @CreationTimestamp@UpdateTimestamp 都不是 JPA 的一部分,并且非常特定于 Hibernate 实现。我正在寻找 JPA 特定的东西。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-02
  • 1970-01-01
  • 2011-07-12
  • 2017-09-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多