gpt4 book ai didi

sql - ON UPDATE CURRENT_TIMESTAMP 和 JPA

转载 作者:行者123 更新时间:2023-12-04 11:43:38 30 4
gpt4 key购买 nike

我有一个带有字段的实体

@Temporal(TemporalType.TIMESTAMP)
@Column(name = "edit_timestamp",
columnDefinition="TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP")
private Date editTimestamp;

@Version
@Column(name = "edit_count")
private short editCount;

private String text;

当我尝试使用 Spring-Data-JPA 更新时,我观察到 edit_count 已增加,但 edit_timestamp 仍然保持不变。如果我手动调用 SQL
UPDATE post SET TEXT='456' WHERE post_id=1;

edit_timestamp 已更新。如果我添加
@PreUpdate
protected void onUpdate() {
editTimestamp = new Date();
}

它没有问题。我的问题是为什么没有 @PreUpdate 的 edit_timestamp 没有更新?

最佳答案

您需要更改列注释以包含可更新 = false。这将导致 edit_timestamp 列不显示在更新 SQL 中,因此 JPA 提供程序不会包含导致它覆盖默认值的字段的当前值。

@Temporal(TemporalType.TIMESTAMP)
@Column(name = "edit_timestamp",
updatable = false,
columnDefinition="TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP")
private Date editTimestamp;

关于sql - ON UPDATE CURRENT_TIMESTAMP 和 JPA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6597588/

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