首页 > 解决方案 > @ManyToMany 关系重复表中的行

问题描述

我正在尝试链接 mysql 表(角色、用户、用户角色)。

UserModel 实体包含一个字段“角色”。

@ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@JoinTable(name = "user_role", joinColumns = {@JoinColumn(name = "user_id")},
inverseJoinColumns = { @JoinColumn(name = "role_id") })
private Set<Role> roles;

角色实体包含一个字段“用户”

@Transient
@ManyToMany(mappedBy = "roles")
private UserModel users;

当我保存用户时,会在“角色”表中自动创建新行。如何取消重复角色?

标签: javamysqlspringhibernatemany-to-many

解决方案


您正在将所有操作从UserModeloverroles属性级联到 entity Role。因此,每当您保留用户时,它也会保留其角色。尝试删除cascade = CascadeType.ALL或替换级联以减少“蛮力”。


推荐阅读