package kr.debop4j.data.ogm.test.id;
import com.google.common.base.Objects;
import kr.debop4j.core.tools.HashTool;
import kr.debop4j.data.model.AnnotatedEntityBase;
import lombok.Getter;
import lombok.Setter;
import javax.persistence.*;
import java.util.List;
/**
* kr.debop4j.data.ogm.test.id.News
*
* @author 배성혁 ( sunghyouk.bae@gmail.com )
* @since 13. 4. 2. 오후 2:21
*/
@Entity
@Table(name = "News")
@Getter
@Setter
public class News extends AnnotatedEntityBase {
private static final long serialVersionUID = 1197914997211364282L;
public News() {}
public News(NewsID newsId, String content, List<Label> labels) {
this.newsId = newsId;
this.content = content;
this.labels = labels;
}
//@EmbeddedId
@Id
private NewsID newsId;
private String content;
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@JoinColumns({ @JoinColumn(name = "news_topic_fk", referencedColumnName = "newsid.title", nullable = false),
@JoinColumn(name = "news_author_fk", referencedColumnName = "newsid.author", nullable = false) })
@JoinTable(name = "Label")
private List<Label> labels;
@Override
public int hashCode() {
return HashTool.compute(newsId, content, labels);
}
@Override
protected Objects.ToStringHelper buildStringHelper() {
return super.buildStringHelper()
.add("newsId", newsId)
.add("content", content)
.add("labels", labels);
}
}