java - 坚持后 JPA 实体 CreateTimestamp 为空

标签 java hibernate jpa

我有一个实体,其字段名为 createTimestamp。这是由数据库在插入时创建的。 getter 看起来像这样:

@Column(name = "create_timestamp", columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP", insertable = false)
public ZonedDateTime getCreateTimestamp() {
    return createTimestamp;
}

但是,当我的服务调用 dao(spring 存储库)创建实体时,创建时间戳为空。

我创建的dao方法:

@Override
public int insert(AntennaSpec antennaSpec) {
    super.save(antennaSpec);
    logger.info("Antenna Spec " + antennaSpec.getAntennaCode() + " created");
    return antennaSpec.getAntennaSpecId();
}

我的 REST 资源类通过调用 create 方法调用服务来创建实体。该方法返回新创建的实体的 ID。在资源中,我然后调用我的服务以返回传递 id 的实体,但创建时间戳为空。我为让它填充所做的工作是在我的资源中,我已经分离了实体,然后再次获取实体。这行得通,但我不喜欢将 detach 暴露给我的服务或资源类。

如有任何帮助,我们将不胜感激。

最佳答案

这是在 spring 中创建时间戳的另一种方式:

@CreationTimestamp
@Column(name = "create_timestamp")
private Date createTimestamp;

关于java - 坚持后 JPA 实体 CreateTimestamp 为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46226884/

相关文章:

java - 在 Arquillian 测试中使用不同的 persistence.xml 文件

java - Scala IDE - Play 2 Eclipse 插件不突出显示 Scala HTML 模板的语法

mysql - 与同一实体类型和表的多个一对多关系?

java - 如何处理一个表的外键映射到多个表的主键?

java - 在滚动复合中使用 GridLayout

java - Handler.postDelayed 函数不会造成时间延迟? - 安卓

java - EntityManager 没有名为 defaultPersistenceUnit 的持久性提供程序

java - Hibernate,自动持久化依赖对象

java - Hibernate - 更新表中的主键 'id' 列

java - 如何自动删除连接表中的行以避免 ConstraintViolationException?