package com.hongqiang.shop.modules.entity; import java.io.Serializable; import java.util.Date; import javax.persistence.Column; import javax.persistence.EntityListeners; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.MappedSuperclass; import javax.persistence.PrePersist; import javax.persistence.PreUpdate; import javax.validation.groups.Default; import org.hibernate.search.annotations.Analyze; import org.hibernate.search.annotations.DateBridge; import org.hibernate.search.annotations.DocumentId; import org.hibernate.search.annotations.Field; import org.hibernate.search.annotations.Index; import org.hibernate.search.annotations.Resolution; import org.hibernate.search.annotations.Store; import org.hibernate.validator.constraints.Length; import com.fasterxml.jackson.annotation.JsonAutoDetect; import com.fasterxml.jackson.annotation.JsonProperty; /** * 数据Entity类 * * @author Jack * */ @JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.NONE, getterVisibility = JsonAutoDetect.Visibility.NONE, setterVisibility = JsonAutoDetect.Visibility.NONE, isGetterVisibility = JsonAutoDetect.Visibility.NONE, creatorVisibility = JsonAutoDetect.Visibility.NONE) @MappedSuperclass @EntityListeners(EntityListeners.class) public abstract class BaseEntity implements Serializable { public abstract interface Save extends Default { } public abstract interface Update extends Default { } private static final long serialVersionUID = 6L; public static final String ID_PROPERTY_NAME = "id"; public static final String CREATE_DATE_PROPERTY_NAME = "createDate"; public static final String MODIFY_DATE_PROPERTY_NAME = "updateDate"; public static final String fileSuffix = ".jhtml"; // public static final String fileSuffix = ".html"; // 显示/隐藏 public static final String SHOW = "1"; public static final String HIDE = "0"; // 是/否 public static final String YES = "1"; public static final String NO = "0"; // 删除标记(0:正常;1:删除;2:审核;) public static final String DEL_FLAG = "delFlag"; public static final String DEL_FLAG_NORMAL = "0"; public static final String DEL_FLAG_DELETE = "1"; public static final String DEL_FLAG_AUDIT = "2"; private Long id;// id主键 private String remarks; // 备注 // private User createBy; // 创建者 private Date createDate;// 创建日期 // private User updateBy; // 更新者 private Date updateDate;// 更新日期 private String delFlag; // 删除标记(0:正常;1:删除;2:审核) public BaseEntity() { this.delFlag = DEL_FLAG_NORMAL; } @PrePersist public void prePersist() { // this.updateBy = UserUtils.getUser(); this.updateDate = new Date(); // this.createBy = this.updateBy; this.createDate = this.updateDate; } @PreUpdate public void preUpdate() { // this.updateBy = UserUtils.getUser(); this.updateDate = new Date(); } @JsonProperty @DocumentId @Id @GeneratedValue(strategy = GenerationType.AUTO) public Long getId() { return this.id; } public void setId(Long id) { this.id = id; } @Length(min = 0, max = 255) public String getRemarks() { return remarks; } public void setRemarks(String remarks) { this.remarks = remarks; } // @JsonIgnore // @ManyToOne(fetch=FetchType.LAZY) // @NotFound(action = NotFoundAction.IGNORE) // public User getCreateBy() { // return createBy; // } // // public void setCreateBy(User createBy) { // this.createBy = createBy; // } @JsonProperty @Field(store = Store.YES, index = Index.YES) @DateBridge(resolution = Resolution.SECOND) @Column(nullable = false, updatable = false) public Date getCreateDate() { return this.createDate; } public void setCreateDate(Date createDate) { this.createDate = createDate; } // @JsonIgnore // @ManyToOne(fetch=FetchType.LAZY) // @NotFound(action = NotFoundAction.IGNORE) // public User getUpdateBy() { // return updateBy; // } // // public void setUpdateBy(User updateBy) { // this.updateBy = updateBy; // } @JsonProperty @Field(store = Store.YES, index = Index.YES) @DateBridge(resolution = Resolution.SECOND) @Column(nullable = false) public Date getUpdateDate() { return this.updateDate; } public void setUpdateDate(Date updateDate) { this.updateDate = updateDate; } @Length(min = 1, max = 1) @Field(index = Index.YES, analyze = Analyze.NO, store = Store.YES) public String getDelFlag() { return delFlag; } public void setDelFlag(String delFlag) { this.delFlag = delFlag; } public boolean equals(Object obj) { if (obj == null) return false; if (this == obj) return true; if (!BaseEntity.class.isAssignableFrom(obj.getClass())) return false; BaseEntity localBaseEntity = (BaseEntity) obj; return getId() != null ? getId().equals(localBaseEntity.getId()) : false; } public int hashCode() { int i = 17; i += (getId() == null ? 0 : getId().hashCode() * 31); return i; } }