我在JPA(休眠)中具有角色用户。 如果我从用户设置中删除角色,则该角色不会传播到数据库。 因此它仍然保存在数据库中。 (我还注意到这仅在有时发生)
如果我将角色集设置为null,则持久化,然后仅将正确的角色设置为用户集,然后再持久化,而不是其工作。

public enum Role {
        USER("USER"),
        SPECIALUSER("SPECIALUSER"),
        ADMIN("ADMIN");

        private final String name;

        private Role(final String name) {
            this.name = name;
        }

        @Override
        public String toString() {
            return name;
        }    

用户实体中的声明

@ElementCollection(targetClass = Role.class, fetch = FetchType.EAGER)
    @Enumerated(EnumType.STRING)
    @CollectionTable(name = "USER_ROLES")
    @Column(name = "ROLE")
    private Set<Role> roles;

在被管理实体的交易中

user.getRoles().remove(Role.ADMIN);
user.getRoles().remove(Role.SPECIALUSER);

我也尝试冲洗但没有帮助。 我很困惑...

===============>>#1 票数:0

尝试也添加一个@OrderColumn

@ElementCollection(targetClass = Role.class, fetch = FetchType.EAGER)
@Enumerated(EnumType.STRING)
@CollectionTable(name = "USER_ROLES")
@Column(name = "ROLE")
@OrderColumn(name = "index_id")
private Set<Role> roles;

  ask by Milkmaid translate from so

未解决问题?本站智能推荐: