【问题标题】:MongoDB add createAt updatedAt field javaMongoDB添加createAt updatedAt字段java
【发布时间】:2020-03-06 17:04:57
【问题描述】:
我很想知道在使用 java 同步驱动程序时如何在 mongo 上拥有 createdAt 和 updatedAt 字段。
我知道如何在猫鼬中做到这一点
const SchemaName = new Schema({
//myschema
}, {
timestamps: true
})
我想知道如何在 java 中实现相同的功能,我知道在模式中拥有 createdAt 和 updatedAt 字段并在插入和更新期间更新值的一种可能性?
【问题讨论】:
标签:
java
mongodb
mongo-java
mongo-java-driver
【解决方案1】:
您可以将javax.persistence 注释与@PrePersist 和@PreUpdate 一起使用。
@PrePersist
在将数据持久化到数据库之前调用,updatable = false只记录一次。
@PreUpdate
在向数据库中插入数据之前调用,每次插入时调用。
您的实体需要继承下面的 AbstractEntity 类:
@MappedSuperclass
public class AbstractEntity implements Serializable {
private static final long serialVersionUID = -8087154111957605234L;
@Column(name = "CREATED_AT", updatable=false)
private Date createdAt;
@Column(name = "UPDATED_AT")
private Date updatedAt;
public Date getCreatedAt() {
return createdAt;
}
public void setCreatedAt(Date createdAt) {
this.createdAt = createdAt;
}
@PrePersist
protected void onCreate() {
createdAt = new Date();
}
@PreUpdate
protected void onUpdate() {
updatedAt = new Date();
}
}