如何让 created_at 列自动生成创建日期时间,就像自动创建 ID 一样?

新手上路,请多包涵

我目前有一个实体如下:

 @Entity
public class Product {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long productId;
    private String productImage;
    private String productTitle;
    private String productDescription;
    private Integer productPrice;
    private Date createdAt;
    private Date updatedAt;

创建此对象后,createdAt 和 updatedAt 的值在数据库中显示为 null,想知道如何实现代码以便自动插入 createdAt 和 updateAt?

我的发帖方法如下:

 @PostMapping("/products")
public ProductResponse createProduct(@Validated @RequestBody ProductForm productForm) {
    Product product = productForm.asProduct();
    Product createdProduct = productRepository.save(product);
    return new ProductResponse(createdProduct, "Product created");
}

原文由 Brett Freeman 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 617
2 个回答

JPA

没有什么比直接注释 Timestamp 字段更方便的了,但是您可以使用 @PrePersist , @PreUpdate 注释并且不费吹灰之力就可以达到相同的结果。

休眠

春季数据 JPA

原文由 dimitrisli 发布,翻译遵循 CC BY-SA 4.0 许可协议

在您的实体中扩展以下抽象类:

 @MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
public abstract class DateAudit implements Serializable {
    @CreatedDate
    @Column(name = "created_at", nullable = false, updatable = false)
    private Date createdAt;

    @LastModifiedDate
    @Column(name = "updated_at")
    private LocalDateTime updatedAt;
}

不要忘记使用 @EnableJpaAuditing

阅读此内容: https ://docs.spring.io/spring-data/jpa/docs/1.7.0.DATAJPA-580-SNAPSHOT/reference/html/auditing.html

原文由 Sarvar N 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题