gpt4 book ai didi

java - 如何生成@CreatedDate LocalDateTime 作为时间戳?

转载 作者:行者123 更新时间:2023-12-01 14:04:49 25 4
gpt4 key购买 nike

我正在使用 spring-jpa坚持一个 LocalDateTime created_at@CreatedDate .

@CreatedDate
private LocalDateTime created_at;

问题:这会自动生成一列 datetime(6) mysql列类型。

问题:如何将其更改为 TIMESTAMP类型?我试过 @Temporal(TIMESTAMP)但在 LocalDateTime 上是不允许的.

有可能吗?

最佳答案

我可以使用以下任何解决方案来使其工作:

    //spring way, with @EnableJpaAuditing on configuration
@EntityListeners(AuditingEntityListener.class)
class MyEntity {
@CreatedDate
@Column(columnDefinition = "TIMESTAMP", nullable = false)
private LocalDateTime created_at;
}

//hibernate way
@CreationTimestamp
@Temporal(TemporalType.TIMESTAMP)
private Date created_at;

//mysql way
@Column(insertable = false, updatable = false,
columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP")
private LocalDateTime created_at;

对于 mysql重要的部分是: insertable=false对于 mysql 使用定义的 DEFAULT CURRENT_TIMESTAMP , 和 updatable=falseON UPDATE CURRENT_TIMESTAMP .

否则, hibernate orm 将发送 created_at=null作为数据库的空值,防止列定义接管!或者更糟,如果你设置 nullable=false ,尽管您为该列定义了默认时间戳处理,但插入仍会失败。

关于java - 如何生成@CreatedDate LocalDateTime 作为时间戳?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60279760/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com