![](/img/trans.png)
[英]mongodb auditing in spring boot for saving createdDate, lastModifiedDate, createdBy, lastModifiedBy
[英]Spring boot - Entity : How to add CreatedDate (UTC timezone aware), LastModifiedDate (UTC timezone aware), CreatedBy, LastModifiedBy
我是 Spring 引导的新手。 我打算使用 postgresql 数据库。 我正在使用 spring 数据 JPA
在这个实体中,我需要添加这些字段
@Entity
@Table(name="STUDENT")
public class Student {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Long id;
@Column(name="STUDENT_NAME", length=50, nullable=false, unique=false)
private String name;
Here i want to add
createdby, modifiedby <--
createdat, modifiedat <-- (i want them to be timezone aware)
// other fields, getters and setters
}
我怎样才能做到这一点。
我来自 django 背景,我们只是在那里
class Student(models.Model):
... other fields
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
created_by = models.ForeignKey(User,related_name="%(app_label)s_%(class)s_created_by",on_delete=models.CASCADE)
您可以使用@PrePersist
和@PreUpdate
方法。 例如:
@Entity
public class SomeEntity {
//..other properties..//
private LocalDateTime createDate;
private LocalDateTime modifyDate;
private String createdBy;
private String modifiedBy;
@PrePersist
private void beforeSaving() {
createDate = LocalDateTime.now();
createdBy = Thread.currentThread().getName(); //todo: put your logic here
}
@PreUpdate
private void beforeUpdating() {
modifyDate = LocalDateTime.now();
modifiedBy = Thread.currentThread().getName(); //todo: put your logic here
}
}
此外,如果您想在所有实体中使用此类方法,您可以创建BaseEntity
并在其他类中扩展它,例如:
@MappedSuperclass
public class BaseEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private LocalDateTime createDate;
private LocalDateTime modifyDate;
private String createdBy;
private String modifiedBy;
@PrePersist
private void beforeSaving() {
createDate = LocalDateTime.now();
createdBy = Thread.currentThread().getName(); //todo: put your logic here
}
@PreUpdate
private void beforeUpdating() {
modifyDate = LocalDateTime.now();
modifiedBy = Thread.currentThread().getName(); //todo: put your logic here
}
//..getters/setters omitted..//
}
和
@Entity
public class SomeEntity extends BaseEntity{
//..other properties..//
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.