在我们的角色管理系统中,一个用户可以有多种角色,一种角色可以赋予多个用户,显然用户和角色就是典型的多对多关系。又或者博客网站上,用户与文章点赞记录也是一个多对多关系,即一个用户可以点赞多篇文章,一篇文章可以给多个用户点赞等,这时候,我们往往需要附加一些信息,比如授权时间、点赞时间等。在上面两个实例中,都可对应于hibernate多对多映射关系的两种方式,在多对多映射中,我们往往使用中间表来建立关联关系,而且会是双向关联,确保任意一方添加或删除,都可以对中间表进行操作来维护关联关系。
下面我们来看多对多映射的第一种实现:
我们先看一个错误的配置:
/****************用户类***************/
@Entity
@Table(name = "t_user3")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
private String userName;
@ManyToMany(cascade = CascadeType.ALL)
private Set<Role> roles;
//忽略get 和set方法
}
/****************角色类***************/
@Entity
@Table(name = "t_role3")
public class