@MappedSuperclass
@EntityListeners( { PersistenceObjectListener.class })
public abstract class AbstractPersistenceObject implements PersistenceObject {
private Timestamp version;
private String createdBy;
private String updatedBy;
@Column(name = "CREATED_BY", length = 20, nullable = true)
public String getCreatedBy() {
return createdBy;
}
}
public class PersistenceObjectListener {
private static final Log logger = LogFactory.getLog(PersistenceObjectListener.class);
@PrePersist
@PreUpdate
public void setUser(AbstractPersistenceObject abstractPersistenceObject) {
Map<?, ?> curSessionMap = (Map<?, ?>) ThreadLocalManager.getValue();
if (curSessionMap == null || curSessionMap.size() == 0) {
logger.debug("The current session map is null");
return;
}
Object loginName = curSessionMap.get(Constant.RETURN_MAP_LOGIN_NAME_KEY);
if (loginName != null && !"".equals(loginName)) {
String createdBy = abstractPersistenceObject.getCreatedBy();
if (createdBy == null || "".equals(createdBy)) {
abstractPersistenceObject.setCreatedBy(String.valueOf(loginName));
}
abstractPersistenceObject.setUpdatedBy(String.valueOf(loginName));
}
}
}