package kr.debop4j.data.ogm.test.massindex.model; import com.google.common.base.Objects; import com.google.common.collect.Lists; import kr.debop4j.core.tools.HashTool; import kr.debop4j.data.model.AnnotatedEntityBase; import kr.debop4j.data.ogm.test.id.NewsID; import lombok.Getter; import lombok.Setter; import org.hibernate.search.annotations.DocumentId; import org.hibernate.search.annotations.FieldBridge; import org.hibernate.search.annotations.Indexed; import javax.persistence.*; import java.util.List; /** * kr.debop4j.data.ogm.test.massindex.model.IndexedNews * * @author 배성혁 ( sunghyouk.bae@gmail.com ) * @since 13. 4. 2. 오후 1:16 */ @Entity @Indexed @Getter @Setter public class IndexedNews extends AnnotatedEntityBase { public IndexedNews() {} public IndexedNews(NewsID newsId, String content) { this.newsId = newsId; this.content = content; } @Id @DocumentId @EmbeddedId @FieldBridge(impl = NewsIdFieldBridge.class) private NewsID newsId; @OneToMany(cascade = CascadeType.ALL) @JoinColumns({ @JoinColumn(name = "news_topic_fk", referencedColumnName = "newsid.title", nullable = false), @JoinColumn(name = "news_author_fk", referencedColumnName = "newsid.author", nullable = false) }) private List<IndexedLabel> labels = Lists.newArrayList(); private String content; @Override public int hashCode() { return HashTool.compute(newsId, content); } @Override protected Objects.ToStringHelper buildStringHelper() { return super.buildStringHelper() .add("newsId", newsId) .add("content", content) .add("lavels", labels); } }