package kr.debop4j.search.hibernate.model; import com.google.common.base.Objects; import kr.debop4j.core.tools.HashTool; import kr.debop4j.data.model.AnnotatedEntityBase; import lombok.AccessLevel; import lombok.Getter; import lombok.Setter; import org.apache.lucene.analysis.kr.KoreanAnalyzer; import org.hibernate.search.annotations.*; import javax.persistence.*; /** * kr.debop4j.search.hibernate.model.Tweet * * @author 배성혁 ( sunghyouk.bae@gmail.com ) * @since 13. 2. 28. */ @Entity @Table(name = "Tweet") @Indexed @Analyzer(impl = KoreanAnalyzer.class) @Getter @Setter public class Tweet extends AnnotatedEntityBase { private static final long serialVersionUID = 3617783931787945059L; @Id @GeneratedValue @Column(name = "tweetId") @DocumentId @Setter(AccessLevel.PROTECTED) private Integer id; @Column(name = "username") @Field private String username; @Lob @Column(name = "tweetText", length = 4000) @Field(index = Index.YES, store = Store.YES) @Boost(3) private String text; @Override public int hashCode() { if (isPersisted()) return HashTool.compute(id); return HashTool.compute(username, text); } @Override protected Objects.ToStringHelper buildStringHelper() { return super.buildStringHelper() .add("id", id) .add("username", username) .add("text", text); } }