//此为一个News类
@SuppressWarnings("deprecation")
@Entity
@Indexed(index="News")
public class News implements Serializable{
private Set<User> users=new HashSet<User>();
@ManyToMany(cascade = CascadeType.PERSIST, fetch = FetchType.EAGER, mappedBy="news")
public Set<User> getUser() {
return users;
}
public void setUser(Set<User> user) {
this.users = users;
}
}
//此为一个User类
@Entity
@Table(name = "user")
public class User implements Serializable{
private Set<News> news = new HashSet<News>();
@ManyToMany(cascade=CascadeType.ALL, fetch=FetchType.EAGER)
@JoinTable(name = "User_News",
joinColumns ={@JoinColumn(name = "user_ID", referencedColumnName = "id") },
inverseJoinColumns ={@JoinColumn(name = "news_ID", referencedColumnName = "id") }
)
public Set<News> getNews() {
return news;
}
public void setNews(Set<News> news) {
this.news = news;
}
public void addTargetNews(News news) {
this.news.add(news);
}
}
News类和User类为多对多关系,这里需要注意两点:1、注意News类中<span style="font-family: Arial, Helvetica, sans-serif;">mappedBy,拥有这个字段的类为被控类,被控类中的数据删除受到主控类的限制,若主控类中还有被控类中数据的引用,则被控类中的数据不能被删除;2、User类中的JoinTable为主控类所有,代表多对多关系的一个独立的表,name为表名,joinColumns代表此此类在表中的关系,name为此类对应表的字段名,referencedColumnName代表本类的主键名,同理inverseJoinColumns为表的另一端的关系,即News方。</span><pre name="code" class="java">