我有3个实体与多对多的关系如下图所示:java.lang.IllegalStateException:与@ManyToMany 3个实体相同的实体的多种表示
角色实体:
@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, CascadeType.PERSIST, CascadeType.REFRESH}, fetch = FetchType.EAGER)
@JoinTable(name = "permission_functionality", joinColumns = {@JoinColumn(name = "permission_id")}, inverseJoinColumns = {@JoinColumn(name = "functionality_id")})
private Set<Functionality> functionalities = new LinkedHashSet<>();
Functionalit Ÿ实体:
@Entity
public class Functionality {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
private String name;
我做了以下内容:
我已经创建了3种功能。
functionality1, functionality2, functionality3
然后创建2个权限:
a. Permission 1 with functionality1, functionality2. b. Permission 2 with functionality2, functionality3.
然后在创建角色:
Role 1 with Permission1 and Permission2 iam getting following exception
java.lang.IllegalStateException:同一实体的多种表示[com.persistence.entity.admin.Functionality#1]正在合并。独立:[[email protected]];独立:[email protected]]
尝试使用Hibernate级联注释而不是JPA注释。例如,@ Cascade(CascadeType.SAVE_UPDATE )会取代{CascadeType.PERSIST,CascadeType.MERGE}。查阅本文:[JPA&Hibernate注解常见错误](https://www.mkyong。com/hibernate/cascade -jpa-hibernate-annotation-common-errors /) – 2017-05-21 20:26:00