【发布时间】:2017-11-29 18:27:05
【问题描述】:
我们有一个微网络服务环境,其中 AbstractAuditingEntity 来自另一个常见的微服务。我想用我自己定义的值覆盖这个抽象类的@CreatedBy 属性。
我的代码如下。
@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 hibernate hibernate-envers