package br.com.caelum.guj.model; import java.util.ArrayList; import java.util.List; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.JoinTable; import javax.persistence.ManyToMany; import javax.persistence.Table; import org.hibernate.annotations.Cache; import org.hibernate.annotations.CacheConcurrencyStrategy; @Entity @Table(name = "tags") @Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE) public class Tag { @Id @GeneratedValue private int id; @Column(nullable = false, unique = true) private String name; @ManyToMany(mappedBy = "tags") @JoinTable(name = "article_tags") private List<Article> articles = new ArrayList<Article>(); public int getId() { return this.id; } public void setId(int id) { this.id = id; } public String getName() { return this.name; } public void setName(String name) { this.name = name; } /** * @param articles * the articles to set */ public void setArticles(List<Article> articles) { this.articles = articles; } /** * @return the articles */ public List<Article> getArticles() { return this.articles; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((this.name == null) ? 0 : this.name.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (obj == null) { return false; } if (this.getClass() != obj.getClass()) { return false; } Tag other = (Tag) obj; if (this.name == null) { if (other.name != null) { return false; } } else if (!this.name.equals(other.name)) { return false; } return true; } }