У меня есть класс User и UserRole.Я хочу удалить роль из пользователя и обновить ее.
это мой метод deleteRole:
public void deleteRole(String username, String role) {
User user = userDao.findByUserName(username);
Set<UserRole> userRoles = user.getUserRole();
for (UserRole tempRole: userRoles) {
if (tempRole.getRole().equals(role)){
userRoles.remove(tempRole);
}
}
user.setUserRole(userRoles);
updateUser(user);
}
вот мой метод updateUser:
public void update(User user) {
sessionFactory.getCurrentSession().merge(user);
}
Я пыталсяобновление, объединение, saveOrUpdate, но ничего не меняется.У меня все еще есть те же роли.
сущность пользователя
@Entity
@Table(name = "USERS")
public class User {
@Id
@Column(name = "USERNAME", nullable = false, unique = true)
private String username;
@Column(name = "PASSWORD", nullable = false)
private String password;
@Transient
private String confirmPassword;
@Column(name = "ENABLED", nullable = false)
private boolean enabled = true;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "user", fetch = FetchType.EAGER)
private Set<UserRole> userRole = new HashSet<>();
вот сущность userRole
@Entity
@Table(name = "USER_ROLES", uniqueConstraints = @UniqueConstraint(
columnNames = { "ROLE", "USERNAME" }))
public class UserRole {
@Id
@GeneratedValue(strategy = IDENTITY)
@Column(name = "user_role_id",
unique = true, nullable = false)
private Integer userRoleId;
@Column(name = "ROLE")
private String role;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "USERNAME")
private User user;
ОБНОВЛЕНИЕ Когда я удаляю рольот пользователя и объединить его, а затем попытаться получить userByUsername из базы, это показывает, что у этого пользователя нет этой роли, но когда я пытаюсь открыть свою HTML-страницу с пользователями, она снова появляется в списке.