package net.agef.jobexchange.domain; import java.io.Serializable; import java.util.Date; import javax.persistence.Column; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.MappedSuperclass; import javax.persistence.Version; import org.apache.tapestry5.beaneditor.NonVisual; import org.hibernate.search.annotations.DocumentId; @SuppressWarnings("unchecked") @MappedSuperclass public class AbstractEntity implements Serializable, Comparable { protected static final long serialVersionUID = -5269831219220124237L; protected long id; protected long version; protected Date created; protected Date modified; public int compareTo(Object o) { return String.valueOf(this).compareTo(String.valueOf(o)); } @Id @GeneratedValue(strategy = GenerationType.AUTO) @DocumentId @NonVisual public Long getId() { return id; } @NonVisual public void setId(long id) { this.id = id; } @Version @Column(name="OPTLOCK") public Long getVersion() { return version; } /** * @param version the version to set */ @NonVisual public void setVersion(Long version) { this.version = version; } /** * @return the created */ public Date getCreated() { return created; } /** * @param created the created to set */ @NonVisual public void setCreated(Date created) { this.created = created; } /** * @return the modified */ public Date getModified() { return modified; } /** * @param modified the modified to set */ @NonVisual public void setModified(Date modified) { this.modified = modified; } /* (non-Javadoc) * @see java.lang.Object#hashCode() */ @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + (int) (id ^ (id >>> 32)); return result; } /* (non-Javadoc) * @see java.lang.Object#equals(java.lang.Object) */ @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; AbstractEntity other = (AbstractEntity) obj; if (id != other.id) return false; return true; } }