【发布时间】:2019-05-14 15:05:14
【问题描述】:
我在 Spring Boot 中使用 JPA 将信息保存到 DB。我有诸如creationDate 和updationDate 之类的审计信息,我将其保存到数据库中,将诸如creationDate 和updationDate 之类的数据保存在@PrePersist 和@PreUpdate 方法中。我想要这个更新条件所以我添加了布尔标志 boolean auditInformationFlag 但它认为 auditInformationFlag 变量作为数据库列。是否可以在此类中具有瞬态属性
@Entity
@Table(name = "TestDB")
public class TestEntity implements Serializable {
@Column(name = "creationdate",nullable = false, insertable = true, updatable = false)
private Timestamp creationDate;
@Column(name = "updationdate",nullable = false, insertable = true, updatable = true)
private Timestamp modificationDate;
private boolean auditInformationFlag;
public boolean isAuditInformationFlag() {
return auditInformationFlag;
}
public void setAuditInformationFlag(boolean auditInformationFlag) {
this.auditInformationFlag = auditInformationFlag;
}
public Timestamp getCreationDate() {
return creationDate;
}
public void setCreationDate(Timestamp creationDate) {
this.creationDate = creationDate;
}
public Timestamp getModificationDate() {
return modificationDate;
}
public void setModificationDate(Timestamp modificationDate) {
this.modificationDate = modificationDate;
}
@PrePersist
protected void onCreate() {
if(auditInformationFlag){
this.setCreationDate(new Timestamp((new Date()).getTime()));
this.setModificationDate(new Timestamp((new Date()).getTime()));
}
}
@PreUpdate
protected void onUpdate() {
if(auditInformationFlag){
this.setModificationDate(new Timestamp((new Date()).getTime()));
}
}
}
【问题讨论】:
-
用
@Transient注释。 -
这个瞬态字段是做什么用的?也许使用 Spring Data JPA 和 @EnableJpaAuditing 注释更好?然后你就可以完全摆脱 PreUpdate / PrePersist 方法了。
标签: java spring-boot spring-data-jpa