如何在Play中创建自动生成的日期/时间戳字段!/ JPA?
问题内容:
我想在实体对象上添加一个Date / DateTime / Timestamp字段,该字段将在创建/持久化实体并将其设置为“现在”时自动创建,永远不再更新。
其他用例包括的字段始终会更新为包含实体的最后修改日期。
我以前是在mysql模式中达到这种要求的。
在Play中做到这一点的最佳方法是什么!/ JPA?
问题答案:
您可以使用一个代码片段来实现所需的功能。看一看:
// Timestampable.java
package models;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.MappedSuperclass;
import javax.persistence.PrePersist;
import javax.persistence.PreUpdate;
import javax.persistence.Version;
import play.db.ebean.Model;
@MappedSuperclass
public class Timestampable extends Model {
@Id
@GeneratedValue
public Long id;
@Column(name = "created_at")
public Date createdAt;
@Column(name = "updated_at")
public Date updatedAt;
@Version
public int version;
@Override
public void save() {
createdAt();
super.save();
}
@Override
public void update() {
updatedAt();
super.update();
}
@PrePersist
void createdAt() {
this.createdAt = this.updatedAt = new Date();
}
@PreUpdate
void updatedAt() {
this.updatedAt = new Date();
}
}