java - @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;
当我保存用户时,会在“角色”表中自动创建新行。如何取消重复角色?
解决方案
您正在将所有操作从UserModel
overroles
属性级联到 entity Role
。因此,每当您保留用户时,它也会保留其角色。尝试删除cascade = CascadeType.ALL
或替换级联以减少“蛮力”。
推荐阅读
- android - 无论我设置什么出发地和目的地,我总是得到一条路线
- arrays - 将值排序到数组中
- docker - 如何使用 pod-local 环境变量在 pod 上执行 kubectl 命令?
- jquery - 引导模型 ajax 表单在 MVC 发布后再次在模型主体内加载完整的 ActionResult
- c# - HttpClient.PatchAsync 在 Xamarin.iOS 上引发 PlatformNotSupportedException
- database - Conexion Oracle and ODBC
- oracle - 如何更改交互式网格中过滤器的标签?
- python - 如何让令牌在一段时间后过期?(没有 jwt)
- android-studio - 无法在 Android Studio 3.5.1 中创建语言环境 strings.xml
- xml - XSLT拆分字符串,将它们存储在变量中并输出它们