我在JPA(hibernate)中有User角色。
如果我从用户集中删除角色,则它不会传播到数据库。
所以它仍然存在于数据库中。
(我也注意到这种情况有时只会发生)
如果我将角色集设置为null persist,则只将正确的角色设置为用户集并再次保留,而不是其工作。
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);
我也尝试冲洗,但没有帮助。我很困惑......
答案 0 :(得分: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;