我的 Postgres 数据库中有一个表,它有一个时间戳列。我希望每次更新行时自动插入它。我写了一个数据库触发器:
CREATE FUNCTION update_last_edit_date() RETURNS trigger AS $update_last_edit_date$
BEGIN
NEW.last_edit_date := localtimestamp(0);
RETURN NEW;
END;
$update_last_edit_date$ LANGUAGE plpgsql;
CREATE TRIGGER update_last_edit_date BEFORE UPDATE ON employee
FOR EACH ROW
WHEN (OLD.* IS DISTINCT FROM NEW.*)
EXECUTE PROCEDURE update_last_edit_date();
哪个工作正常,但我想知道是否有更简单的方法使用 jpa/hibernate 注释来做到这一点。我尝试了这些不同的选项:
@预更新
@PreUpdate
private void onUpdate(){
this.lastEditDate = new Date();
}
@更新时间戳
@UpdateTimestamp
@Temporal(TemporalType.TIMESTAMP)
private Date lastEditDate;
但是我得到的是,当我更新一行时,所有行的时间戳都会更新,因此表中的所有时间戳始终相同。我在这里做错了什么?
莫回无
相关分类