У меня есть отношение объекта полномочий, где один пользователь может иметь несколько разрешений. Когда я пытаюсь обновить пустое значение set
для пользователя, обновление не происходит.
Мои сущности
@Entity
public class Users {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String clientId;
private String userName;
private String userStatus;
@ManyToOne(cascade = {CascadeType.MERGE, CascadeType.PERSIST}, fetch = FetchType.EAGER)
private Users parentUserId;
@Builder.Default
@OneToMany(mappedBy = "parentUserId", fetch = FetchType.EAGER)
private Set<Users> children = new HashSet<>();
@OneToMany(mappedBy = "user", cascade = {CascadeType.ALL}, fetch = FetchType.EAGER)
@Builder.Default
private Set<AccessMapping> permissions = new HashSet<>();
private Long updatedAt;
}
@Entity
public class AccessMapping {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToOne(cascade = CascadeType.ALL)
@JoinTable(name = "FeatureGroupPermissions",
joinColumns = @JoinColumn(name = "FeatureGroupId"),
inverseJoinColumns = @JoinColumn(name = "PermissionId"))
private FeatureGroups featureGroup;
@ManyToOne
@JoinTable(name = "UserPermissions",
joinColumns = @JoinColumn(name = "UserId"),
inverseJoinColumns = @JoinColumn(name = "PermissionId"))
private Users user;
private String accessType;
private Long updatedAt;
}
Один пользователь имеет разрешение на несколько групп функций.
Размер разрешения hashSet эквивалентен количеству разрешений, которые есть у пользователя. Если я хочу удалить все разрешения пользователя, я устанавливаю пустой hashSet и обновляю пользователя с помощью функции EntityManager.merge()
. Но это не работает. Разрешения все еще остаются, и когда я выбираю пользователя, hashSet все еще имеет первоначальную длину, что означает, что никакие разрешения не были удалены.
Что я делаю неправильно или не понимаю о спящих сущностях?
Заранее спасибо.