我們有一個微型業務環境,AbstractAuditingEntity來自另一個常見的微型服務。我想用我自己定義的值覆蓋這個抽象類的@CreatedBy屬性。如何在Spring中重寫AbstractAuditingEntity中的@CreatedBY值JPA
我的代碼如下。
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
public abstract class AbstractAuditingEntity {
@Column(name = "created_by", insertable = true, updatable = false, nullable = false)
@CreatedBy
private String createdBy;
@Column(name = "created_date", insertable = true, updatable = false, nullable = false)
@Type(type = "org.jadira.usertype.dateandtime.joda.PersistentDateTime")
@CreatedDate
private DateTime createdDate;
@Column(name = "last_modified_by", nullable = false)
@LastModifiedBy
private String lastModifiedBy;
@Type(type = "org.jadira.usertype.dateandtime.joda.PersistentDateTime")
@LastModifiedDate
private DateTime lastModifiedDate;
// @Transient
public abstract Long getInternalId();
// @Transient
public abstract void setInternalId(Long internalId);
public DateTime getCreatedDate() {
return createdDate;
}
public void setCreatedDate(DateTime createdDate) {
this.createdDate = createdDate;
}
public DateTime getLastModifiedDate() {
return lastModifiedDate;
}
public void setLastModifiedDate(DateTime lastModifiedDate) {
this.lastModifiedDate = lastModifiedDate;
}
public String getCreatedBy() {
return createdBy;
}
public void setCreatedBy(String createdBy) {
this.createdBy = createdBy;
}
public String getLastModifiedBy() {
return lastModifiedBy;
}
public void setLastModifiedBy(String lastModifiedBy) {
this.lastModifiedBy = lastModifiedBy;
}
}
我的領域類是像
@Entity
@Table(name = "programs")
@AttributeOverride(name = "createdBy", column = @Column(name = "created_by"))
public class Program extends AbstractAuditingEntity {
@Id
@SequenceGenerator(name = "programs_seq", sequenceName = "programs_seq")
@GeneratedValue(generator = "programs_seq")
@Column(name = "internal_id", nullable = false)
private Long internalId;
private String programName;
@Override
public String toString() {
return ToStringBuilder.reflectionToString(this, ToStringStyle.MULTI_LINE_STYLE);
}
//Start getters & setters - auto generated by IDE
@Override
public Long getInternalId() {
return internalId;
}
@Override
public void setInternalId(Long internalId) {
this.internalId = internalId;
}
public String getProgramName() {
return programName;
}
public void setProgramName(String programName) {
this.programName = programName;
}
}
當我們試圖堅持在數據庫中該域對象,由我提供的用戶定義的值沒有得到持續,而不是Spring框架還加入了自己值。我已經嘗試@AttributeOverride,但它不適用於我的情況。
在此先感謝您的幫助。
請注意在沒有Spring的情況下執行此操作的自然方法是創建一個'RevisionEntityListener'並在Envers構建它之後在修訂實體實例上設置值。以上是本質上Spring的封裝。 – Naros
我知道這種情況。但所有這些配置和AuditorAware接口都是在許多其他服務使用的通用服務中實現的。而現在我目前的CreatedBy和Updatedby的價值只是以這種方式來的。但是我想在個人服務中以不同的價值覆蓋這個價值,有沒有什麼辦法可以做到這一點。 感謝您的建議。但我正在尋找更多解決方案。 – Kat