程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了java.lang.IllegalStateException:具有@ManyToMany 3个实体的同一实体的多个表示形式大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决java.lang.IllegalStateException:具有@ManyToMany 3个实体的同一实体的多个表示形式?

开发过程中遇到java.lang.IllegalStateException:具有@ManyToMany 3个实体的同一实体的多个表示形式的问题如何解决?下面主要结合日常开发的经验,给出你关于java.lang.IllegalStateException:具有@ManyToMany 3个实体的同一实体的多个表示形式的解决方法建议,希望对你解决java.lang.IllegalStateException:具有@ManyToMany 3个实体的同一实体的多个表示形式有所启发或帮助;

通过删除权限实体上的CascadeType.MERGE修复了此问题

解决方法

我有3个具有ManyToMany关系的实体:

角色实体:

@Entity
public class Role {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer roleID;
    private String roleName;
    private String description;

    @ManyToMany(cascade = {CascadeType.MERGE,CascadeType.PERSIST,CascadeType.REFRESH},fetch = FetchType.EAGER)
    @JoinTable(name = "role_permission",joinColumns = {@JoinColumn(name = "role_id")},inverseJoinColumns = {@JoinColumn(name = "permission_id")})
    private Set<Permission> permissions = new LinkedHashSet<Permission>();
}

权限实体:

@Entity
public class Permission {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int permissionID;
    private String permissionName;
    private String description;

    @ManyToMany(cascade = {CascadeType.MERGE,fetch = FetchType.EAGER)
    @JoinTable(name = "permission_functionality",joinColumns = {@JoinColumn(name = "permission_id")},inverseJoinColumns = {@JoinColumn(name = "functionality_id")})
    private Set<Functionality> functionalities = new LinkedHashSet<>();
}

功能实体:

@Entity
public class Functionality {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;
    private String name;
}

我做了以下事情:

  1. 我创建了3个功能:

    Functionality1,Functionality2,Functionality3
    
  2. 然后创建2个权限:

    Permission1 with Functionality1,Functionality2
    

    Permission2 with Functionality2,Functionality3

  3. 然后创建一个角色:

    Role1 with Permission1 and Permission2
    

我收到以下异常:

大佬总结

以上是大佬教程为你收集整理的java.lang.IllegalStateException:具有@ManyToMany 3个实体的同一实体的多个表示形式全部内容,希望文章能够帮你解决java.lang.IllegalStateException:具有@ManyToMany 3个实体的同一实体的多个表示形式所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: