当前位置: 首页 > 知识库问答 >
问题:

@ManyTomany关系在表中重复行

程胡非
2023-03-14

我正在尝试链接mysql表(role、user、user_role)。

UserModel实体包含字段“roles”。

@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;

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

共有1个答案

蒙才
2023-03-14

您将所有操作从usermodel通过roles属性级联到entityrole。因此,每当您持久化一个用户时,它也会持久化它的角色。尝试删除cascade=cascadeType.all或将级联替换为不那么“暴力”的级联。

 类似资料:
  • 我想在(您可以将其视为Student)实体和实体之间实现一个@ManyTomany单向的。很简单,一个教室可以有很多学生,而学生可以有很多教室。我希望它是单向的,因为我希望班级只知道它包含什么学生,学生不必知道他们有什么班级。这就是我目前所拥有的: ClassRoom.java Account.java 我通过以下代码保存它(使用Spring JPA): 但我得到了以下错误: 下面是StackTr

  • 在一个项目中,我有以下实体:具有连接到关键字的模板部分的模板。这两种关系都是。一些代码: 然后,我尝试使用给定ID查找与某个模板相关的关键字。我使用使用此谓词执行此操作: 由于某些原因,谓词处理得根本不好。尝试调用方法时出现此错误: 组织.hibernate.hql.internal.ast.QuerySyntax 异常: 模板实体部分目录未映射 [选择关键字身份\nfrom mypackage.

  • 问题内容: 我下面有两个… 我想更新的,有时也用下面的方法有时… 方法#1 方法#2 第一种方法可以正常工作,但第二种则不能。但是,当我将“ 从” 移至“ 第二”方法时,效果很好,而不是第一个。 问题答案: 问题是一个问题。 假设它是的子类,那么您的问题是关系中只有一方是拥有实体。将使得实体所属的实体,因此仅改变该实体被持久化。这意味着,你必须更新在这两种情况下的实体。如果您有一个“ a”的组列表

  • 问题内容: 我想保持与ManyToMany关系的实体。但是我在坚持过程中遇到了一些问题。 我的实体: 和 服务代码: 第一次,当我尝试使用UserRoles“ ROLE_USER”保留用户时,没有问题。插入User和UserRoles以及联接表。 我的问题是当我尝试使用相同的UserRoles保留第二个User时。我通过找到它来检查UserRoles是否存在( userRolesServices.

  • 问题内容: 我有一些与关系有关的实体: 和 使用某些模型执行保存模型时,一切正常。表存储这些实体的所有键。但是,使用驱动程序保存模型时,表不会更改。我认为映射存在问题。 问题答案: 那是预期的行为。在双向多对多关联中,一侧必须是反侧。在您的情况下,这是一面,因为它包含: 拥有关系的字段。除非关系是单向的,否则为必需。 这意味着是关联的所有者,并且Hibernate仅在维护关联时检查该侧。

  • 我试图存储一个manytomany关系,但它没有存储关系。 下面的代码生成了3个表。 这是我发送到服务器的JSON: {“abbreviatedsequence”:“xdf”,“medals”:[{“name”:“purple”,“id”:1},{“name”:“red”,“id”:2}],“sequence”:“xdfree”,“name”:“savier”} java