Hibernate使用JPA实现多对多配置

在多对多中其实和一对多大部分一致,只是在两边的JavaBean中加入Set集合,

并为Set集合添加注解,以下JavaBean省略set和get方法


@Entity
@Table(name="t_user")
public class User {
	
	@Id
	@Column(name="u_id")
	@GenericGenerator(name="mygenerator",strategy="native")
	@GeneratedValue(generator="mygenerator")
	private Integer uid;
	@Column(name="u_name")
	private String uname;

	/*
	 * 多对多
	 */
	@ManyToMany(
			targetEntity=Role.class, // 关联的另一方
			cascade={	//配置级联操作
					CascadeType.PERSIST,	//级联保存
					CascadeType.MERGE		//级联更新
					}
			)
	@JoinTable(name="t_user_role", //中间表名
				joinColumns={	//没有放弃外键的一方
						@JoinColumn(	
								name="u_id",		//中间表的字段名
								referencedColumnName="u_id"	//自己的表的主键名
								) 
						}, 
				inverseJoinColumns={	//放弃外键维护的一方
						@JoinColumn(	
								name="r_id",	//中间表的对应自己的外键名
								referencedColumnName="r_id"	//自己表的主键名
								)
						}
	)
	private Set<Role> roles = new HashSet<Role>();

}


@Entity
@Table(name="t_role")
public class Role {
	
	@Id
	@Column(name="r_id")
	@GenericGenerator(name="mygenerator",strategy="native")
	@GeneratedValue(generator="mygenerator")
	private Integer rid;
	@Column(name="r_name")
	private String rname;
	
	/*
	 * 多对多
	 */
	@ManyToMany(
			targetEntity=User.class,	//目标对象,关联的另一方
			mappedBy="roles"	//放弃外键维护
			)
	private Set<User> users = new HashSet<User>();
	
}


重点看@ManyToMany注解。

这里两边都配置了@ManyToMany但是为什么两边配置的属性不一样呢,

在这里一边是用户一边是角色,以前在之前的配置文件式的多对多中说过,在多对多中必须有一方要放弃外键维护,否则会报主键重复异常

在这里就是把角色的外键维护去掉了,理由是操作少的一方取消外键维护,在这里我就把角色的权利去掉了,怎么去掉的呢,mappedBy="roles"这句就相当于去掉了外键维护

别的属性在代码中都有注释,按照上面代码改就可以了

上面一些没有注释的在之前的文章中有解释,在这里就不啰嗦了







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值