如何使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 和 updateAt 的值在数据库中显示 null,并且想知道如何实现代码以便创建At 和 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");
}

答案 1

吉帕

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

冬眠

春季数据 JPA


答案 2

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

@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;
}

不要忘记使用启用 JPA 审计功能@EnableJpaAuditing

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


推荐